CYCLUS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
pyne.cc
Go to the documentation of this file.
1 // This file is composed of the following original files:
2 
3 // license.txt
4 // src/utils.cpp
5 // src/state_map.cpp
6 // src/nucname.cpp
7 // src/rxname.cpp
8 // src/data.cpp
9 // src/jsoncpp.cpp
10 // src/jsoncustomwriter.cpp
11 // src/material.cpp
12 // src/enrichment_cascade.cpp
13 // src/enrichment.cpp
14 // src/enrichment_symbolic20.cpp
15 // src/_decay.cpp
16 
17 // PyNE amalgated source http://pyne.io/
18 #include "pyne.h"
19 
20 //
21 // start of license.txt
22 //
23 // Copyright 2011-2014, the PyNE Development Team. All rights reserved.
24 //
25 // Redistribution and use in source and binary forms, with or without modification, are
26 // permitted provided that the following conditions are met:
27 //
28 // 1. Redistributions of source code must retain the above copyright notice, this list of
29 // conditions and the following disclaimer.
30 //
31 // 2. Redistributions in binary form must reproduce the above copyright notice, this list
32 // of conditions and the following disclaimer in the documentation and/or other materials
33 // provided with the distribution.
34 //
35 // THIS SOFTWARE IS PROVIDED BY THE PYNE DEVELOPMENT TEAM ``AS IS'' AND ANY EXPRESS OR IMPLIED
36 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
37 // FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
38 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
39 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
40 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
41 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
42 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
43 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44 //
45 // The views and conclusions contained in the software and documentation are those of the
46 // authors and should not be interpreted as representing official policies, either expressed
47 // or implied, of the stakeholders of the PyNE project or the employers of PyNE developers.
48 //
49 // -------------------------------------------------------------------------------
50 // The files cpp/measure.cpp and cpp/measure.hpp are covered by:
51 //
52 // Copyright 2004 Sandia Corporation. Under the terms of Contract
53 // DE-AC04-94AL85000 with Sandia Coroporation, the U.S. Government
54 // retains certain rights in this software.
55 //
56 // http://trac.mcs.anl.gov/projects/ITAPS/wiki/MOAB
57 // //
58 // end of license.txt
59 //
60 
61 
62 //
63 // start of src/utils.cpp
64 //
65 // General Library
66 #ifndef PYNE_IS_AMALGAMATED
67 extern "C" double endftod_(char *str, int len);
68 #endif
69 
70 #ifndef PYNE_IS_AMALGAMATED
71 #include "utils.h"
72 #endif
73 
74 
75 // PyNE Globals
76 
77 std::string pyne::PYNE_DATA = "";
78 std::string pyne::NUC_DATA_PATH = "";
79 
81 #if defined __WIN_MSVC__
82  char * tmpPYNE_DATA;
83  size_t lenPYNE_DATA;
84  errno_t errPYNE_DATA = _dupenv_s(&tmpPYNE_DATA, &lenPYNE_DATA, "PYNE_DATA");
85  if (errPYNE_DATA)
86  tmpPYNE_DATA = (char *) "<NOT_FOUND>";
87  PYNE_DATA = (std::string) tmpPYNE_DATA;
88 
89  char * tmpNUC_DATA_PATH;
90  size_t lenNUC_DATA_PATH;
91  errno_t errNUC_DATA_PATH = _dupenv_s(&tmpNUC_DATA_PATH, &lenNUC_DATA_PATH, "NUC_DATA_PATH");
92  if (errPYNE_DATA)
93  tmpNUC_DATA_PATH = (char *) "<NOT_FOUND>";
94  NUC_DATA_PATH = (std::string) tmpNUC_DATA_PATH;
95 #else
96  char * tmppath;
97  tmppath = getenv("PYNE_DATA");
98  if (tmppath == NULL)
99  tmppath = (char *) "<NOT_FOUND>";
100  PYNE_DATA = std::string(tmppath);
101 
102  tmppath = getenv("NUC_DATA_PATH");
103  if (tmppath == NULL)
104  tmppath = (char *) "<NOT_FOUND>";
105  NUC_DATA_PATH = std::string(tmppath);
106 #endif
107  return;
108 };
109 
110 
111 
112 // String Transformations
113 std::string pyne::to_str(int t) {
114  std::stringstream ss;
115  ss << t;
116  return ss.str();
117 }
118 
119 std::string pyne::to_str(unsigned int t) {
120  std::stringstream ss;
121  ss << t;
122  return ss.str();
123 }
124 
125 std::string pyne::to_str(double t) {
126  std::stringstream ss;
127  ss << t;
128  return ss.str();
129 }
130 
131 std::string pyne::to_str(bool t) {
132  std::stringstream ss;
133  ss << t;
134  return ss.str();
135 }
136 
137 
138 int pyne::to_int(std::string s) {
139  return atoi( s.c_str() );
140 }
141 
142 double pyne::to_dbl(std::string s) {
143  return strtod( s.c_str(), NULL );
144 }
145 
146 double pyne::endftod_cpp(char * s) {
147  // Converts string from ENDF only handles "E-less" format but is 5x faster
148  int pos, mant, exp;
149  double v, dbl_exp;
150 
151  mant = exp = 0;
152  if (s[2] == '.') {
153  // Convert an ENDF float
154  if (s[9] == '+' or s[9] == '-') {
155  // All these factors of ten are from place values.
156  mant = s[8] + 10 * s[7] + 100 * s[6] + 1000 * s[5] + 10000 * s[4] + \
157  100000 * s[3] + 1000000 * s[1] - 1111111 * '0';
158  exp = s[10] - '0';
159  // Make the right power of 10.
160  dbl_exp = exp & 01? 10.: 1;
161  dbl_exp *= (exp >>= 1) & 01? 100.: 1;
162  dbl_exp *= (exp >>= 1) & 01? 1.0e4: 1;
163  dbl_exp *= (exp >>= 1) & 01? 1.0e8: 1;
164  // Adjust for powers of ten from treating mantissa as an integer.
165  dbl_exp = (s[9] == '-'? 1/dbl_exp: dbl_exp) * 1.0e-6;
166  // Get mantissa sign, apply exponent.
167  v = mant * (s[0] == '-'? -1: 1) * dbl_exp;
168  }
169  else {
170  mant = s[7] + 10 * s[6] + 100 * s[5] + 1000 * s[4] + 10000 * s[3] + \
171  100000 * s[1] - 111111 * '0';
172  exp = s[10] + 10 * s[9] - 11 * '0';
173  dbl_exp = exp & 01? 10.: 1;
174  dbl_exp *= (exp >>= 1) & 01? 100.: 1;
175  dbl_exp *= (exp >>= 1) & 01? 1.0e4: 1;
176  dbl_exp *= (exp >>= 1) & 01? 1.0e8: 1;
177  dbl_exp *= (exp >>= 1) & 01? 1.0e16: 1;
178  dbl_exp *= (exp >>= 1) & 01? 1.0e32: 1;
179  dbl_exp *= (exp >>= 1) & 01? 1.0e64: 1;
180  dbl_exp = (s[8] == '-'? 1/dbl_exp: dbl_exp) * 1.0e-5;
181  v = mant * (s[0] == '-'? -1: 1) * dbl_exp;
182  }
183  }
184 
185  // Convert an ENDF int to float; we start from the last char in the field and
186  // move forward until we hit a non-digit.
187  else {
188  v = 0;
189  mant = 1; // Here we use mant for the place value about to be read in.
190  pos = 10;
191  while (s[pos] != '-' and s[pos] != '+' and s[pos] != ' ' and pos > 0) {
192  v += mant * (s[pos] - '0');
193  mant *= 10;
194  pos--;
195  }
196  v *= (s[pos] == '-'? -1: 1);
197  }
198  return v;
199 }
200 
201 double pyne::endftod_f(char * s) {
202 #ifdef PYNE_IS_AMALGAMATED
203  return endftod_cpp(s);
204 #else
205  return endftod_(s, 12);
206 #endif
207 }
208 
209 double (*pyne::endftod)(char * s) = &pyne::endftod_f;
210 
213 }
214 
215 std::string pyne::to_upper(std::string s) {
216  // change each element of the string to upper case.
217  for(unsigned int i = 0; i < s.length(); i++)
218  s[i] = toupper(s[i]);
219  return s;
220 }
221 
222 std::string pyne::to_lower(std::string s) {
223  // change each element of the string to lower case
224  for(unsigned int i = 0; i < s.length(); i++)
225  s[i] = tolower(s[i]);
226  return s;
227 }
228 
229 
230 std::string pyne::capitalize(std::string s) {
231  unsigned int slen = s.length();
232  if (slen == 0)
233  return s;
234  // uppercase the first character
235  s[0] = toupper(s[0]);
236  // change each subsequent element of the string to lower case
237  for(unsigned int i = 1; i < slen; i++)
238  s[i] = tolower(s[i]);
239  return s;
240 }
241 
242 
243 std::string pyne::get_flag(char line[], int max_l) {
244  char tempflag [10];
245  for (int i = 0; i < max_l; i++)
246  {
247  if (line[i] == '\t' || line[i] == '\n' || line[i] == ' ' || line[i] == '\0')
248  {
249  tempflag[i] = '\0';
250  break;
251  }
252  else
253  tempflag[i] = line[i];
254  }
255  return std::string (tempflag);
256 }
257 
258 
259 
260 std::string pyne::remove_substring(std::string s, std::string substr) {
261  // Removes a substring from the string s
262  int n_found = s.find(substr);
263  while ( 0 <= n_found ) {
264  s.erase( n_found , substr.length() );
265  n_found = s.find(substr);
266  }
267  return s;
268 }
269 
270 
271 std::string pyne::remove_characters(std::string s, std::string chars) {
272  // Removes all characters in the string chars from the string s
273  for (int i = 0; i < chars.length(); i++ ) {
274  s = remove_substring(s, chars.substr(i, 1) );
275  }
276  return s;
277 }
278 
279 
280 std::string pyne::replace_all_substrings(std::string s, std::string substr, std::string repstr) {
281  // Replaces all instance of substr in s with the string repstr
282  int n_found = s.find(substr);
283  while ( 0 <= n_found ) {
284  s.replace( n_found , substr.length(), repstr );
285  n_found = s.find(substr);
286  }
287  return s;
288 };
289 
290 
291 
292 std::string pyne::last_char(std::string s) {
293  // Returns the last character in a string.
294  return s.substr(s.length()-1, 1);
295 }
296 
297 
298 std::string pyne::slice_from_end(std::string s, int n, int l) {
299  // Returns the slice of a string using negative indices.
300  return s.substr(s.length()+n, l);
301 }
302 
303 
304 bool pyne::ternary_ge(int a, int b, int c) {
305  // Returns true id a <= b <= c and flase otherwise.
306  return (a <= b && b <= c);
307 }
308 
309 
310 bool pyne::contains_substring(std::string s, std::string substr) {
311  // Returns a boolean based on if the sub is in s.
312  int n = s.find(substr);
313  return ( 0 <= n && n < s.length() );
314 }
315 
316 
317 std::string pyne::natural_naming(std::string name) {
318  // Calculates a version on the string name that is a valid
319  // variable name, ie it uses only word characters.
320  std::string nat_name (name);
321 
322  // Replace Whitespace characters with underscores
323  nat_name = pyne::replace_all_substrings(nat_name, " ", "_");
324  nat_name = pyne::replace_all_substrings(nat_name, "\t", "_");
325  nat_name = pyne::replace_all_substrings(nat_name, "\n", "_");
326 
327  // Remove non-word characters
328  int n = 0;
329  while ( n < nat_name.length() ) {
330  if ( pyne::words.find(nat_name[n]) == std::string::npos )
331  nat_name.erase(n, 1);
332  else
333  n++;
334  }
335 
336  // Make sure that the name in non-empty before continuing
337  if (nat_name.length() == 0)
338  return nat_name;
339 
340  // Make sure that the name doesn't begin with a number.
341  if ( pyne::digits.find(nat_name[0]) != std::string::npos)
342  nat_name.insert(0, "_");
343 
344  return nat_name;
345 };
346 
347 
348 //
349 // Math Helpers
350 //
351 
352 double pyne::slope(double x2, double y2, double x1, double y1) {
353  // Finds the slope of a line.
354  return (y2 - y1) / (x2 - x1);
355 };
356 
357 
358 double pyne::solve_line(double x, double x2, double y2, double x1, double y1) {
359  return (slope(x2,y2,x1,y1) * (x - x2)) + y2;
360 };
361 
362 
363 double pyne::tanh(double x) {
364  return std::tanh(x);
365 };
366 
367 double pyne::coth(double x) {
368  return 1.0 / std::tanh(x);
369 };
370 
371 
372 
373 // File Helpers
374 
375 bool pyne::file_exists(std::string strfilename) {
376  // Thank you intarwebz for this function!
377  // Sepcifically: http://www.techbytes.ca/techbyte103.html
378  struct stat stFileInfo;
379  bool blnReturn;
380  int intStat;
381 
382  // Attempt to get the file attributes
383  intStat = stat(strfilename.c_str(), &stFileInfo);
384 
385  if(intStat == 0) {
386  // We were able to get the file attributes
387  // so the file obviously exists.
388  blnReturn = true;
389  }
390  else {
391  // We were not able to get the file attributes.
392  // This may mean that we don't have permission to
393  // access the folder which contains this file. If you
394  // need to do that level of checking, lookup the
395  // return values of stat which will give you
396  // more details on why stat failed.
397  blnReturn = false;
398  }
399 
400  return(blnReturn);
401 };
402 
403 // Message Helpers
404 
405 bool pyne::USE_WARNINGS = true;
406 
409  return USE_WARNINGS;
410 }
411 
412 void pyne::warning(std::string s){
413  // Prints a warning message
414  if (USE_WARNINGS){
415  std::cout << "\033[1;33m WARNING: \033[0m" << s << "\n";
416  }
417 }
418 
419 
420 
421 
422 //
423 // end of src/utils.cpp
424 //
425 
426 
427 //
428 // start of src/state_map.cpp
429 //
430 //Mapping file for state ids to nuc ids
431 //This File was autogenerated!!
432 #ifndef PYNE_4HFU6PUEQJB3ZJ4UIFLVU4SPCM
433 #define PYNE_4HFU6PUEQJB3ZJ4UIFLVU4SPCM
434 namespace pyne {
435 namespace nucname {
436 #define TOTAL_STATE_MAPS 922
437 std::map<int, int> state_id_map;
438 int map_nuc_ids [TOTAL_STATE_MAPS] = {110240001,
439 130240001,
440 130260001,
441 130320002,
442 170340001,
443 170380001,
444 190380001,
445 190380015,
446 210420002,
447 210430001,
448 210440004,
449 230440001,
450 210450001,
451 210460002,
452 230460001,
453 210500001,
454 250500001,
455 250520001,
456 260520041,
457 260530022,
458 270540001,
459 210560001,
460 210560004,
461 250580001,
462 270580001,
463 270580002,
464 230600000,
465 230600001,
466 250600001,
467 270600001,
468 250620001,
469 270620001,
470 230640001,
471 250640002,
472 260650003,
473 260670002,
474 290670023,
475 280690001,
476 280690008,
477 300690001,
478 340690004,
479 290700001,
480 290700003,
481 350700006,
482 280710002,
483 300710001,
484 320710002,
485 300730001,
486 300730002,
487 320730002,
488 340730001,
489 360730004,
490 310740002,
491 350740002,
492 290750001,
493 290750002,
494 300750001,
495 320750002,
496 330750004,
497 280760004,
498 290760001,
499 350760002,
500 300770002,
501 320770001,
502 330770004,
503 340770001,
504 350770001,
505 300780004,
506 310780004,
507 350780004,
508 370780003,
509 390780001,
510 320790001,
511 330790007,
512 340790001,
513 350790001,
514 360790001,
515 310800001,
516 350800002,
517 390800001,
518 390800003,
519 320810001,
520 340810001,
521 360810002,
522 370810001,
523 330820001,
524 340820015,
525 350820001,
526 370820001,
527 410820003,
528 340830001,
529 360830002,
530 380830002,
531 390830001,
532 310840001,
533 350840001,
534 360840019,
535 360840061,
536 370840002,
537 390840002,
538 410840007,
539 360850001,
540 370850003,
541 380850002,
542 390850001,
543 400850002,
544 410850003,
545 410850005,
546 370860002,
547 390860002,
548 410860001,
549 410860002,
550 380870001,
551 390870001,
552 400870002,
553 350880003,
554 410880001,
555 430880000,
556 430880001,
557 390890001,
558 400890001,
559 410890001,
560 420890002,
561 430890001,
562 370900001,
563 390900002,
564 400900003,
565 410900002,
566 410900007,
567 430900001,
568 430900006,
569 390910001,
570 400910040,
571 410910001,
572 420910001,
573 430910001,
574 440910001,
575 450910001,
576 410920001,
577 450920001,
578 390930002,
579 410930001,
580 420930016,
581 430930001,
582 440930001,
583 470940001,
584 470940002,
585 390970001,
586 390970029,
587 410970001,
588 430970001,
589 450970001,
590 370980001,
591 390980005,
592 410980001,
593 450980001,
594 410990001,
595 430990002,
596 450990001,
597 470990002,
598 371000001,
599 391000004,
600 411000001,
601 411000009,
602 411000012,
603 431000002,
604 431000004,
605 451000004,
606 471000001,
607 471010002,
608 411020001,
609 431020001,
610 451020005,
611 471020001,
612 441030005,
613 451030001,
614 471030002,
615 491030001,
616 411040004,
617 451040003,
618 471040001,
619 491040003,
620 451050001,
621 471050001,
622 491050001,
623 451060001,
624 471060001,
625 491060001,
626 431070000,
627 461070002,
628 471070001,
629 491070001,
630 401080003,
631 461090002,
632 471090001,
633 491090001,
634 491090021,
635 451100000,
636 451100001,
637 471100002,
638 491100001,
639 461110002,
640 471110001,
641 491110001,
642 451120000,
643 451120001,
644 491120001,
645 491120004,
646 491120010,
647 471130001,
648 481130001,
649 491130001,
650 501130001,
651 451140005,
652 491140001,
653 491140005,
654 531140005,
655 461150001,
656 471150001,
657 481150001,
658 491150001,
659 521150001,
660 451160001,
661 471160001,
662 471160004,
663 511160003,
664 551160001,
665 471180004,
666 491180001,
667 491180003,
668 511180007,
669 531180002,
670 551180001,
671 471190000,
672 471190001,
673 481190002,
674 491190001,
675 501190002,
676 511190072,
677 521190002,
678 551190001,
679 451200002,
680 471200002,
681 491200001,
682 491200002,
683 511200001,
684 531200013,
685 551200001,
686 571200000,
687 461210001,
688 481210002,
689 491210001,
690 501210001,
691 521210002,
692 551210001,
693 451220002,
694 471220001,
695 471220002,
696 491220001,
697 491220005,
698 511220005,
699 511220006,
700 551220007,
701 551220008,
702 481230003,
703 491230001,
704 501230001,
705 521230002,
706 551230005,
707 461240004,
708 491240002,
709 501240016,
710 511240001,
711 511240002,
712 551240025,
713 481250001,
714 491250001,
715 501250001,
716 521250002,
717 541250002,
718 571250005,
719 461260003,
720 461260004,
721 491260001,
722 511260001,
723 511260002,
724 481270006,
725 491270001,
726 491270009,
727 501270001,
728 521270002,
729 541270002,
730 561270002,
731 571270001,
732 581270001,
733 461280004,
734 491280003,
735 501280003,
736 511280001,
737 571280001,
738 471290001,
739 481290001,
740 491290001,
741 491290010,
742 491290012,
743 491290013,
744 501290001,
745 501290017,
746 501290018,
747 501290025,
748 511290011,
749 511290012,
750 511290023,
751 521290001,
752 541290002,
753 551290010,
754 561290001,
755 571290002,
756 601290001,
757 601290003,
758 491300001,
759 491300002,
760 491300003,
761 501300002,
762 511300001,
763 531300001,
764 551300004,
765 561300030,
766 591300002,
767 491310001,
768 491310004,
769 501310001,
770 521310001,
771 521310033,
772 541310002,
773 561310002,
774 571310006,
775 581310001,
776 591310002,
777 501320006,
778 511320001,
779 521320006,
780 521320022,
781 531320003,
782 541320030,
783 571320004,
784 581320030,
785 491330001,
786 521330002,
787 531330016,
788 531330059,
789 531330065,
790 541330001,
791 561330002,
792 581330001,
793 591330003,
794 601330001,
795 611330005,
796 621330000,
797 511340002,
798 521340003,
799 531340005,
800 541340007,
801 601340017,
802 611340000,
803 611340001,
804 521350010,
805 541350002,
806 551350010,
807 561350002,
808 581350004,
809 591350004,
810 601350001,
811 611350000,
812 611350003,
813 501360003,
814 531360006,
815 551360001,
816 561360005,
817 611360000,
818 611360001,
819 631360001,
820 561370002,
821 581370002,
822 601370004,
823 501380003,
824 551380003,
825 581380005,
826 591380005,
827 581390002,
828 601390002,
829 611390001,
830 621390004,
831 641390001,
832 591400003,
833 591400015,
834 601400009,
835 611400008,
836 631400004,
837 601410002,
838 621410002,
839 631410001,
840 641410004,
841 651410001,
842 591420001,
843 591420024,
844 601420004,
845 611420012,
846 631420031,
847 641420019,
848 641420020,
849 651420003,
850 621430002,
851 621430043,
852 641430002,
853 651430001,
854 661430003,
855 551440004,
856 591440001,
857 651440004,
858 651440006,
859 651440007,
860 671440003,
861 641450002,
862 651450004,
863 661450002,
864 681450002,
865 571460001,
866 631460013,
867 651460022,
868 651460026,
869 661460008,
870 651470001,
871 661470002,
872 681470002,
873 691470001,
874 591480000,
875 591480001,
876 611480003,
877 651480001,
878 671480001,
879 671480012,
880 681480008,
881 651490001,
882 661490027,
883 671490001,
884 681490002,
885 631500001,
886 651500002,
887 671500001,
888 691500005,
889 581510001,
890 621510012,
891 631510002,
892 651510003,
893 671510001,
894 681510021,
895 691510001,
896 691510012,
897 701510001,
898 701510005,
899 701510010,
900 611520004,
901 611520014,
902 631520001,
903 631520016,
904 651520006,
905 671520001,
906 691520006,
907 691520018,
908 691520019,
909 701520006,
910 621530006,
911 641530003,
912 641530008,
913 651530003,
914 671530001,
915 691530001,
916 601540003,
917 611540000,
918 611540001,
919 631540013,
920 651540001,
921 651540002,
922 711540015,
923 721540006,
924 641550006,
925 661550009,
926 671550002,
927 691550001,
928 711550001,
929 711550004,
930 611560002,
931 651560002,
932 651560004,
933 671560001,
934 671560012,
935 711560001,
936 721560004,
937 641570012,
938 661570005,
939 651580003,
940 651580019,
941 671580001,
942 671580007,
943 711580000,
944 621590006,
945 641590002,
946 661590009,
947 671590003,
948 671600001,
949 671600006,
950 691600002,
951 711600001,
952 671610002,
953 681610014,
954 691610001,
955 711610004,
956 671620003,
957 691620020,
958 711620008,
959 711620009,
960 751620001,
961 671630003,
962 751630001,
963 671640003,
964 691640001,
965 771640001,
966 661650002,
967 751650001,
968 771650001,
969 671660001,
970 691660006,
971 711660001,
972 711660002,
973 681670003,
974 711670001,
975 751670001,
976 671680001,
977 711680013,
978 771680001,
979 701690001,
980 711690001,
981 751690001,
982 771690001,
983 671700001,
984 711700008,
985 771700001,
986 711710001,
987 721710001,
988 771710001,
989 781710002,
990 711720001,
991 711720005,
992 751720001,
993 771720002,
994 791720001,
995 771730000,
996 771730029,
997 791730001,
998 711740003,
999 771740001,
1000 701750007,
1001 711750053,
1002 791750001,
1003 701760005,
1004 711760001,
1005 731760012,
1006 731760090,
1007 791760001,
1008 791760002,
1009 691770000,
1010 701770006,
1011 711770029,
1012 711770203,
1013 721770048,
1014 721770107,
1015 791770002,
1016 711780003,
1017 721780005,
1018 721780109,
1019 731780000,
1020 731780059,
1021 731780094,
1022 731780139,
1023 711790006,
1024 721790005,
1025 721790046,
1026 731790117,
1027 741790002,
1028 751790137,
1029 791790007,
1030 811790001,
1031 711800010,
1032 721800007,
1033 731800002,
1034 721810025,
1035 721810078,
1036 761810001,
1037 811810002,
1038 721820009,
1039 721820026,
1040 731820001,
1041 731820029,
1042 751820001,
1043 761820029,
1044 741830007,
1045 751830058,
1046 761830002,
1047 781830001,
1048 811830002,
1049 721840005,
1050 751840005,
1051 771840007,
1052 781840034,
1053 791840003,
1054 741850006,
1055 781850002,
1056 791850001,
1057 801850004,
1058 811850003,
1059 751860004,
1060 771860001,
1061 811860000,
1062 811860005,
1063 831860001,
1064 791870002,
1065 801870001,
1066 811870002,
1067 821870001,
1068 831870002,
1069 751880007,
1070 811880001,
1071 761890001,
1072 771890006,
1073 771890084,
1074 791890003,
1075 801890002,
1076 811890001,
1077 821890001,
1078 831890002,
1079 831890003,
1080 731900002,
1081 741900006,
1082 751900003,
1083 761900032,
1084 771900002,
1085 771900037,
1086 791900014,
1087 811900000,
1088 811900001,
1089 811900006,
1090 831900000,
1091 831900001,
1092 761910001,
1093 771910003,
1094 771910071,
1095 791910004,
1096 801910035,
1097 811910002,
1098 821910002,
1099 831910002,
1100 751920002,
1101 751920003,
1102 761920047,
1103 761920112,
1104 771920003,
1105 771920015,
1106 791920004,
1107 791920015,
1108 811920002,
1109 811920008,
1110 821920011,
1111 821920014,
1112 821920017,
1113 821920020,
1114 821920021,
1115 831920001,
1116 841920006,
1117 851920000,
1118 851920001,
1119 771930002,
1120 781930005,
1121 791930004,
1122 801930003,
1123 811930002,
1124 821930001,
1125 831930001,
1126 851930001,
1127 851930002,
1128 751940001,
1129 751940002,
1130 751940003,
1131 771940007,
1132 771940012,
1133 791940003,
1134 791940008,
1135 811940001,
1136 831940001,
1137 831940002,
1138 851940000,
1139 851940001,
1140 761950002,
1141 761950004,
1142 771950002,
1143 781950007,
1144 791950004,
1145 791950055,
1146 801950003,
1147 811950002,
1148 821950002,
1149 831950001,
1150 841950002,
1151 851950001,
1152 861950001,
1153 751960001,
1154 771960004,
1155 791960003,
1156 791960054,
1157 811960006,
1158 831960002,
1159 831960003,
1160 841960015,
1161 761970001,
1162 771970002,
1163 781970009,
1164 791970004,
1165 801970004,
1166 811970002,
1167 821970002,
1168 831970001,
1169 841970002,
1170 851970001,
1171 861970001,
1172 761980006,
1173 761980010,
1174 771980001,
1175 791980050,
1176 811980007,
1177 811980012,
1178 831980001,
1179 831980003,
1180 851980001,
1181 871980001,
1182 781990008,
1183 791990006,
1184 801990007,
1185 811990003,
1186 821990003,
1187 831990001,
1188 841990002,
1189 861990001,
1190 812000010,
1191 832000001,
1192 832000003,
1193 852000001,
1194 852000003,
1195 802010013,
1196 812010003,
1197 822010004,
1198 832010001,
1199 842010003,
1200 862010001,
1201 872010001,
1202 882010000,
1203 782020003,
1204 822020014,
1205 852020001,
1206 852020002,
1207 872020001,
1208 822030006,
1209 822030053,
1210 832030006,
1211 842030005,
1212 862030001,
1213 882030001,
1214 812040029,
1215 822040021,
1216 832040008,
1217 832040038,
1218 852040001,
1219 872040001,
1220 872040002,
1221 802050008,
1222 822050009,
1223 842050010,
1224 842050017,
1225 882050001,
1226 812060045,
1227 832060016,
1228 872060001,
1229 872060002,
1230 892060001,
1231 812070002,
1232 822070003,
1233 832070036,
1234 842070014,
1235 862070007,
1236 882070001,
1237 802080004,
1238 832080018,
1239 802100002,
1240 802100005,
1241 832100002,
1242 822110014,
1243 832110021,
1244 842110015,
1245 852110076,
1246 872110013,
1247 872110019,
1248 832120005,
1249 832120012,
1250 842120030,
1251 852120004,
1252 882130005,
1253 852140006,
1254 862140004,
1255 862140005,
1256 872140001,
1257 902140004,
1258 832150009,
1259 862150013,
1260 902150003,
1261 872160001,
1262 832170005,
1263 892170010,
1264 902170001,
1265 912170001,
1266 872180002,
1267 922180001,
1268 892220001,
1269 912340002,
1270 922350001,
1271 932360001,
1272 952360001,
1273 942370003,
1274 922380101,
1275 932380128,
1276 942380041,
1277 942380044,
1278 952380001,
1279 942390090,
1280 942390094,
1281 952390011,
1282 932400001,
1283 942400102,
1284 952400057,
1285 962400002,
1286 962400003,
1287 942410106,
1288 942410107,
1289 952410075,
1290 962410007,
1291 932420007,
1292 942420044,
1293 942420045,
1294 952420002,
1295 952420141,
1296 962420004,
1297 962420005,
1298 972420002,
1299 972420003,
1300 942440032,
1301 952440001,
1302 952440112,
1303 952440113,
1304 962440009,
1305 962440013,
1306 962440014,
1307 972440004,
1308 982440002,
1309 942450024,
1310 952450021,
1311 962450061,
1312 972450003,
1313 1012450001,
1314 952460001,
1315 952460008,
1316 972460000,
1317 982460002,
1318 992460000,
1319 1012460000,
1320 1012460001,
1321 1002470001,
1322 1002470002,
1323 972480001,
1324 992500001,
1325 1002500001,
1326 1002500002,
1327 1022500001,
1328 1022510002,
1329 1002530008,
1330 1022530003,
1331 1022530030,
1332 1022530031,
1333 1022530032,
1334 1032530000,
1335 1032530001,
1336 992540002,
1337 1012540000,
1338 1012540001,
1339 1022540011,
1340 1032550001,
1341 1032550027,
1342 992560001,
1343 1002560022,
1344 1042560007,
1345 1042560009,
1346 1042560012,
1347 1042570002,
1348 1052570002,
1349 1012580001,
1350 1052580001,
1351 1042610001,
1352 1072620001,
1353 1062630003,
1354 1062650001,
1355 1082650001,
1356 1082670002,
1357 1102700001,
1358 1102710001,
1359 1082770001,
1361 1,
1362 1,
1363 1,
1364 1,
1365 1,
1366 1,
1367 2,
1368 1,
1369 1,
1370 1,
1371 1,
1372 1,
1373 1,
1374 1,
1375 1,
1376 1,
1377 1,
1378 1,
1379 1,
1380 1,
1381 1,
1382 2,
1383 1,
1384 1,
1385 2,
1386 1,
1387 2,
1388 1,
1389 1,
1390 1,
1391 1,
1392 1,
1393 1,
1394 1,
1395 1,
1396 1,
1397 1,
1398 2,
1399 1,
1400 1,
1401 1,
1402 2,
1403 1,
1404 1,
1405 1,
1406 1,
1407 1,
1408 2,
1409 1,
1410 1,
1411 1,
1412 1,
1413 1,
1414 1,
1415 2,
1416 1,
1417 1,
1418 1,
1419 1,
1420 1,
1421 1,
1422 1,
1423 1,
1424 1,
1425 1,
1426 1,
1427 1,
1428 1,
1429 1,
1430 1,
1431 1,
1432 1,
1433 1,
1434 1,
1435 1,
1436 1,
1437 1,
1438 1,
1439 1,
1440 2,
1441 1,
1442 1,
1443 1,
1444 1,
1445 1,
1446 1,
1447 1,
1448 1,
1449 1,
1450 1,
1451 1,
1452 1,
1453 1,
1454 1,
1455 1,
1456 1,
1457 2,
1458 1,
1459 1,
1460 1,
1461 1,
1462 1,
1463 1,
1464 1,
1465 1,
1466 1,
1467 2,
1468 1,
1469 1,
1470 1,
1471 1,
1472 1,
1473 1,
1474 1,
1475 1,
1476 1,
1477 1,
1478 2,
1479 1,
1480 1,
1481 1,
1482 1,
1483 1,
1484 1,
1485 1,
1486 1,
1487 2,
1488 3,
1489 1,
1490 2,
1491 1,
1492 1,
1493 1,
1494 1,
1495 1,
1496 1,
1497 1,
1498 1,
1499 1,
1500 1,
1501 1,
1502 1,
1503 1,
1504 1,
1505 1,
1506 2,
1507 1,
1508 2,
1509 1,
1510 1,
1511 1,
1512 1,
1513 1,
1514 1,
1515 1,
1516 1,
1517 1,
1518 1,
1519 1,
1520 1,
1521 1,
1522 1,
1523 2,
1524 3,
1525 1,
1526 2,
1527 1,
1528 1,
1529 1,
1530 1,
1531 1,
1532 1,
1533 1,
1534 1,
1535 1,
1536 1,
1537 1,
1538 1,
1539 1,
1540 1,
1541 1,
1542 1,
1543 1,
1544 1,
1545 1,
1546 1,
1547 1,
1548 1,
1549 1,
1550 1,
1551 1,
1552 1,
1553 1,
1554 1,
1555 1,
1556 2,
1557 1,
1558 2,
1559 1,
1560 1,
1561 1,
1562 1,
1563 1,
1564 1,
1565 2,
1566 1,
1567 2,
1568 3,
1569 1,
1570 1,
1571 1,
1572 1,
1573 1,
1574 1,
1575 2,
1576 1,
1577 1,
1578 1,
1579 1,
1580 1,
1581 1,
1582 1,
1583 1,
1584 2,
1585 1,
1586 1,
1587 1,
1588 1,
1589 2,
1590 1,
1591 1,
1592 1,
1593 1,
1594 2,
1595 1,
1596 1,
1597 1,
1598 1,
1599 1,
1600 1,
1601 1,
1602 1,
1603 1,
1604 2,
1605 1,
1606 1,
1607 1,
1608 1,
1609 1,
1610 1,
1611 1,
1612 1,
1613 1,
1614 1,
1615 1,
1616 1,
1617 2,
1618 1,
1619 2,
1620 1,
1621 2,
1622 1,
1623 2,
1624 1,
1625 1,
1626 1,
1627 1,
1628 1,
1629 1,
1630 1,
1631 1,
1632 1,
1633 2,
1634 1,
1635 1,
1636 1,
1637 1,
1638 1,
1639 1,
1640 1,
1641 1,
1642 2,
1643 1,
1644 1,
1645 2,
1646 1,
1647 1,
1648 1,
1649 1,
1650 1,
1651 1,
1652 1,
1653 1,
1654 1,
1655 1,
1656 1,
1657 1,
1658 1,
1659 1,
1660 1,
1661 1,
1662 1,
1663 2,
1664 3,
1665 4,
1666 1,
1667 2,
1668 3,
1669 4,
1670 1,
1671 2,
1672 3,
1673 1,
1674 1,
1675 1,
1676 1,
1677 1,
1678 1,
1679 2,
1680 1,
1681 2,
1682 3,
1683 1,
1684 1,
1685 1,
1686 1,
1687 1,
1688 1,
1689 1,
1690 2,
1691 1,
1692 1,
1693 2,
1694 1,
1695 1,
1696 1,
1697 1,
1698 1,
1699 1,
1700 1,
1701 1,
1702 2,
1703 1,
1704 1,
1705 1,
1706 1,
1707 1,
1708 1,
1709 1,
1710 2,
1711 3,
1712 1,
1713 1,
1714 1,
1715 1,
1716 1,
1717 1,
1718 1,
1719 1,
1720 1,
1721 1,
1722 1,
1723 1,
1724 2,
1725 1,
1726 1,
1727 1,
1728 1,
1729 1,
1730 1,
1731 1,
1732 1,
1733 1,
1734 2,
1735 1,
1736 1,
1737 1,
1738 1,
1739 1,
1740 2,
1741 1,
1742 1,
1743 1,
1744 1,
1745 1,
1746 1,
1747 1,
1748 1,
1749 1,
1750 1,
1751 1,
1752 1,
1753 1,
1754 1,
1755 2,
1756 1,
1757 1,
1758 1,
1759 1,
1760 1,
1761 1,
1762 1,
1763 1,
1764 1,
1765 2,
1766 1,
1767 1,
1768 1,
1769 1,
1770 2,
1771 1,
1772 1,
1773 2,
1774 1,
1775 1,
1776 1,
1777 1,
1778 1,
1779 1,
1780 1,
1781 1,
1782 1,
1783 1,
1784 1,
1785 1,
1786 1,
1787 1,
1788 1,
1789 1,
1790 1,
1791 1,
1792 1,
1793 1,
1794 1,
1795 1,
1796 1,
1797 2,
1798 2,
1799 1,
1800 1,
1801 2,
1802 1,
1803 1,
1804 1,
1805 1,
1806 1,
1807 1,
1808 1,
1809 1,
1810 1,
1811 1,
1812 1,
1813 1,
1814 1,
1815 1,
1816 1,
1817 1,
1818 2,
1819 1,
1820 2,
1821 3,
1822 1,
1823 2,
1824 1,
1825 2,
1826 1,
1827 1,
1828 1,
1829 2,
1830 3,
1831 1,
1832 1,
1833 1,
1834 2,
1835 1,
1836 1,
1837 1,
1838 1,
1839 1,
1840 1,
1841 1,
1842 1,
1843 2,
1844 1,
1845 1,
1846 1,
1847 1,
1848 1,
1849 1,
1850 1,
1851 2,
1852 1,
1853 1,
1854 2,
1855 1,
1856 2,
1857 1,
1858 1,
1859 2,
1860 1,
1861 1,
1862 2,
1863 1,
1864 2,
1865 1,
1866 1,
1867 1,
1868 1,
1869 1,
1870 1,
1871 2,
1872 1,
1873 1,
1874 1,
1875 1,
1876 1,
1877 1,
1878 1,
1879 1,
1880 1,
1881 1,
1882 1,
1883 1,
1884 1,
1885 1,
1886 1,
1887 1,
1888 1,
1889 1,
1890 1,
1891 1,
1892 1,
1893 1,
1894 2,
1895 1,
1896 1,
1897 1,
1898 1,
1899 1,
1900 1,
1901 1,
1902 1,
1903 1,
1904 1,
1905 1,
1906 1,
1907 1,
1908 1,
1909 1,
1910 1,
1911 1,
1912 1,
1913 2,
1914 1,
1915 1,
1916 1,
1917 1,
1918 2,
1919 1,
1920 1,
1921 1,
1922 1,
1923 1,
1924 1,
1925 1,
1926 1,
1927 1,
1928 1,
1929 1,
1930 2,
1931 1,
1932 1,
1933 1,
1934 1,
1935 1,
1936 2,
1937 1,
1938 1,
1939 1,
1940 2,
1941 1,
1942 2,
1943 3,
1944 4,
1945 1,
1946 1,
1947 2,
1948 1,
1949 1,
1950 1,
1951 1,
1952 1,
1953 1,
1954 1,
1955 1,
1956 2,
1957 3,
1958 1,
1959 1,
1960 1,
1961 2,
1962 1,
1963 2,
1964 1,
1965 1,
1966 1,
1967 1,
1968 1,
1969 1,
1970 1,
1971 1,
1972 1,
1973 1,
1974 1,
1975 1,
1976 1,
1977 1,
1978 1,
1979 1,
1980 1,
1981 1,
1982 1,
1983 1,
1984 2,
1985 1,
1986 1,
1987 1,
1988 1,
1989 1,
1990 1,
1991 1,
1992 1,
1993 1,
1994 1,
1995 2,
1996 1,
1997 1,
1998 1,
1999 1,
2000 1,
2001 2,
2002 1,
2003 1,
2004 1,
2005 1,
2006 1,
2007 2,
2008 1,
2009 1,
2010 2,
2011 3,
2012 1,
2013 2,
2014 1,
2015 1,
2016 2,
2017 1,
2018 1,
2019 1,
2020 1,
2021 1,
2022 1,
2023 2,
2024 1,
2025 2,
2026 1,
2027 2,
2028 1,
2029 2,
2030 1,
2031 2,
2032 1,
2033 2,
2034 3,
2035 4,
2036 5,
2037 1,
2038 1,
2039 1,
2040 2,
2041 1,
2042 1,
2043 1,
2044 1,
2045 1,
2046 1,
2047 1,
2048 1,
2049 2,
2050 1,
2051 2,
2052 3,
2053 1,
2054 2,
2055 1,
2056 2,
2057 1,
2058 1,
2059 2,
2060 1,
2061 2,
2062 1,
2063 2,
2064 1,
2065 1,
2066 1,
2067 2,
2068 1,
2069 1,
2070 1,
2071 1,
2072 1,
2073 1,
2074 1,
2075 1,
2076 1,
2077 1,
2078 2,
2079 1,
2080 1,
2081 2,
2082 1,
2083 1,
2084 1,
2085 1,
2086 1,
2087 1,
2088 1,
2089 1,
2090 1,
2091 1,
2092 1,
2093 1,
2094 1,
2095 2,
2096 1,
2097 1,
2098 1,
2099 2,
2100 1,
2101 2,
2102 1,
2103 1,
2104 1,
2105 1,
2106 1,
2107 1,
2108 1,
2109 1,
2110 1,
2111 1,
2112 1,
2113 1,
2114 2,
2115 1,
2116 2,
2117 1,
2118 1,
2119 1,
2120 1,
2121 1,
2122 1,
2123 1,
2124 1,
2125 1,
2126 1,
2127 1,
2128 2,
2129 1,
2130 1,
2131 2,
2132 1,
2133 1,
2134 1,
2135 1,
2136 1,
2137 1,
2138 1,
2139 2,
2140 1,
2141 1,
2142 2,
2143 1,
2144 1,
2145 1,
2146 2,
2147 1,
2148 1,
2149 1,
2150 1,
2151 2,
2152 1,
2153 1,
2154 1,
2155 1,
2156 1,
2157 1,
2158 1,
2159 1,
2160 1,
2161 1,
2162 2,
2163 1,
2164 1,
2165 1,
2166 1,
2167 1,
2168 1,
2169 2,
2170 1,
2171 2,
2172 2,
2173 1,
2174 1,
2175 1,
2176 1,
2177 2,
2178 1,
2179 1,
2180 1,
2181 1,
2182 1,
2183 1,
2184 1,
2185 1,
2186 1,
2187 1,
2188 1,
2189 1,
2190 1,
2191 1,
2192 1,
2193 1,
2194 1,
2195 1,
2196 1,
2197 1,
2198 1,
2199 2,
2200 1,
2201 1,
2202 1,
2203 1,
2204 1,
2205 1,
2206 1,
2207 1,
2208 2,
2209 1,
2210 2,
2211 1,
2212 1,
2213 2,
2214 1,
2215 2,
2216 1,
2217 2,
2218 1,
2219 2,
2220 1,
2221 2,
2222 1,
2223 1,
2224 2,
2225 3,
2226 1,
2227 2,
2228 3,
2229 1,
2230 1,
2231 1,
2232 1,
2233 1,
2234 1,
2235 1,
2236 1,
2237 2,
2238 1,
2239 1,
2240 1,
2241 1,
2242 2,
2243 2,
2244 1,
2245 1,
2246 1,
2247 1,
2248 2,
2249 1,
2250 1,
2251 1,
2252 1,
2253 2,
2254 3,
2255 4,
2256 1,
2257 1,
2258 1,
2259 1,
2260 2,
2261 1,
2262 1,
2263 2,
2264 1,
2265 1,
2266 1,
2267 2,
2268 3,
2269 1,
2270 1,
2271 1,
2272 1,
2273 1,
2274 1,
2275 1,
2276 1,
2277 1,
2278 1,
2279 1,
2280 1,
2281 1,
2282 };
2283 }
2284 }
2285 #endif//
2286 // end of src/state_map.cpp
2287 //
2288 
2289 
2290 //
2291 // start of src/nucname.cpp
2292 //
2293 // Converts between naming conventions for nuclides.
2294 // zzaaam is for numerals only (923350).
2295 // name is for letters as well (U-235).
2296 // MCNP is for numerals without the meta-stable flag (92235), as used in MCNP.
2297 
2298 #ifndef PYNE_IS_AMALGAMATED
2299 #include "nucname.h"
2300 #include "state_map.cpp"
2301 #endif
2302 
2303 
2304 /*** Constructs the LL to zz Dictionary ***/
2307 
2308  lzd["Be"] = 04;
2309  lzd["Ba"] = 56;
2310  lzd["Bh"] = 107;
2311  lzd["Bi"] = 83;
2312  lzd["Bk"] = 97;
2313  lzd["Br"] = 35;
2314  lzd["Ru"] = 44;
2315  lzd["Re"] = 75;
2316  lzd["Rf"] = 104;
2317  lzd["Rg"] = 111;
2318  lzd["Ra"] = 88;
2319  lzd["Rb"] = 37;
2320  lzd["Rn"] = 86;
2321  lzd["Rh"] = 45;
2322  lzd["Tm"] = 69;
2323  lzd["H"] = 01;
2324  lzd["P"] = 15;
2325  lzd["Ge"] = 32;
2326  lzd["Gd"] = 64;
2327  lzd["Ga"] = 31;
2328  lzd["Os"] = 76;
2329  lzd["Hs"] = 108;
2330  lzd["Zn"] = 30;
2331  lzd["Ho"] = 67;
2332  lzd["Hf"] = 72;
2333  lzd["Hg"] = 80;
2334  lzd["He"] = 02;
2335  lzd["Pr"] = 59;
2336  lzd["Pt"] = 78;
2337  lzd["Pu"] = 94;
2338  lzd["Pb"] = 82;
2339  lzd["Pa"] = 91;
2340  lzd["Pd"] = 46;
2341  lzd["Po"] = 84;
2342  lzd["Pm"] = 61;
2343  lzd["C"] = 6;
2344  lzd["K"] = 19;
2345  lzd["O"] = 8;
2346  lzd["S"] = 16;
2347  lzd["W"] = 74;
2348  lzd["Eu"] = 63;
2349  lzd["Es"] = 99;
2350  lzd["Er"] = 68;
2351  lzd["Md"] = 101;
2352  lzd["Mg"] = 12;
2353  lzd["Mo"] = 42;
2354  lzd["Mn"] = 25;
2355  lzd["Mt"] = 109;
2356  lzd["U"] = 92;
2357  lzd["Fr"] = 87;
2358  lzd["Fe"] = 26;
2359  lzd["Fm"] = 100;
2360  lzd["Ni"] = 28;
2361  lzd["No"] = 102;
2362  lzd["Na"] = 11;
2363  lzd["Nb"] = 41;
2364  lzd["Nd"] = 60;
2365  lzd["Ne"] = 10;
2366  lzd["Zr"] = 40;
2367  lzd["Np"] = 93;
2368  lzd["B"] = 05;
2369  lzd["Co"] = 27;
2370  lzd["Cm"] = 96;
2371  lzd["F"] = 9;
2372  lzd["Ca"] = 20;
2373  lzd["Cf"] = 98;
2374  lzd["Ce"] = 58;
2375  lzd["Cd"] = 48;
2376  lzd["V"] = 23;
2377  lzd["Cs"] = 55;
2378  lzd["Cr"] = 24;
2379  lzd["Cu"] = 29;
2380  lzd["Sr"] = 38;
2381  lzd["Kr"] = 36;
2382  lzd["Si"] = 14;
2383  lzd["Sn"] = 50;
2384  lzd["Sm"] = 62;
2385  lzd["Sc"] = 21;
2386  lzd["Sb"] = 51;
2387  lzd["Sg"] = 106;
2388  lzd["Se"] = 34;
2389  lzd["Yb"] = 70;
2390  lzd["Db"] = 105;
2391  lzd["Dy"] = 66;
2392  lzd["Ds"] = 110;
2393  lzd["La"] = 57;
2394  lzd["Cl"] = 17;
2395  lzd["Li"] = 03;
2396  lzd["Tl"] = 81;
2397  lzd["Lu"] = 71;
2398  lzd["Lr"] = 103;
2399  lzd["Th"] = 90;
2400  lzd["Ti"] = 22;
2401  lzd["Te"] = 52;
2402  lzd["Tb"] = 65;
2403  lzd["Tc"] = 43;
2404  lzd["Ta"] = 73;
2405  lzd["Ac"] = 89;
2406  lzd["Ag"] = 47;
2407  lzd["I"] = 53;
2408  lzd["Ir"] = 77;
2409  lzd["Am"] = 95;
2410  lzd["Al"] = 13;
2411  lzd["As"] = 33;
2412  lzd["Ar"] = 18;
2413  lzd["Au"] = 79;
2414  lzd["At"] = 85;
2415  lzd["In"] = 49;
2416  lzd["Y"] = 39;
2417  lzd["N"] = 07;
2418  lzd["Xe"] = 54;
2419  lzd["Cn"] = 112;
2420  lzd["Fl"] = 114;
2421  lzd["Lv"] = 116;
2422 
2423  return lzd;
2424 };
2426 
2427 
2428 /*** Constructs zz to LL dictionary **/
2430 {
2431  zzname_t zld;
2432  for (name_zz_iter i = name_zz.begin(); i != name_zz.end(); i++)
2433  {
2434  zld[i->second] = i->first;
2435  }
2436  return zld;
2437 };
2439 
2440 
2441 
2442 /*** Constructs the fluka to zz Dictionary ***/
2445 
2446  fzd["BERYLLIU"] = 40000000;
2447  fzd["BARIUM"] = 560000000;
2448  fzd["BOHRIUM"] = 1070000000; // No fluka
2449  fzd["BISMUTH"] = 830000000;
2450  fzd["BERKELIU"] = 970000000; // No fluka
2451  fzd["BROMINE"] = 350000000;
2452  fzd["RUTHENIU"] = 440000000; // No fluka
2453  fzd["RHENIUM"] = 750000000;
2454  fzd["RUTHERFO"] = 1040000000;
2455  fzd["ROENTGEN"] = 1110000000;
2456  fzd["RADIUM"] = 880000000; // No fluka
2457  fzd["RUBIDIUM"] = 370000000; // No fluka
2458  fzd["RADON"] = 860000000; // no fluka
2459  fzd["RHODIUM"] = 450000000; // no fluka
2460  fzd["THULIUM"] = 690000000; // no fluka
2461  fzd["HYDROGEN"] = 10000000;
2462  fzd["PHOSPHO"] = 150000000;
2463  fzd["GERMANIU"] = 320000000;
2464  fzd["GADOLINI"] = 640000000;
2465  fzd["GALLIUM"] = 310000000;
2466  fzd["OSMIUM"] = 760000000; // no fluka
2467  fzd["HASSIUM"] = 1080000000;
2468  fzd["ZINC"] = 300000000;
2469  fzd["HOLMIUM"] = 670000000; // no fluka
2470  fzd["HAFNIUM"] = 720000000;
2471  fzd["MERCURY"] = 800000000;
2472  fzd["HELIUM"] = 20000000;
2473  fzd["PRASEODY"] = 590000000; // no fluka
2474  fzd["PLATINUM"] = 780000000;
2475  fzd["239-PU"] = 940000000; // "239-PU"
2476  fzd["LEAD"] = 820000000;
2477  fzd["PROTACTI"] = 910000000; // no fluka
2478  fzd["PALLADIU"] = 460000000; // no fluka
2479  fzd["POLONIUM"] = 840000000; // no fluka
2480  fzd["PROMETHI"] = 610000000; // no fluka
2481  fzd["CARBON"] = 60000000;
2482  fzd["POTASSIU"] = 190000000;
2483  fzd["OXYGEN"] = 80000000;
2484  fzd["SULFUR"] = 160000000;
2485  fzd["TUNGSTEN"] = 740000000;
2486  fzd["EUROPIUM"] = 630000000;
2487  fzd["EINSTEIN"] = 990000000; // no fluka
2488  fzd["ERBIUM"] = 680000000; // no fluka
2489  fzd["MENDELEV"] = 1010000000; // no fluka
2490  fzd["MAGNESIU"] = 120000000;
2491  fzd["MOLYBDEN"] = 420000000;
2492  fzd["MANGANES"] = 250000000;
2493  fzd["MEITNERI"] = 1090000000; // no fluka
2494  fzd["URANIUM"] = 920000000;
2495  fzd["FRANCIUM"] = 870000000; // no fluka
2496  fzd["IRON"] = 260000000;
2497  fzd["FERMIUM"] = 1000000000; // no fluka
2498  fzd["NICKEL"] = 280000000;
2499  fzd["NITROGEN"] = 70000000;
2500  fzd["NOBELIUM"] = 1020000000; // no fluka
2501  fzd["SODIUM"] = 110000000;
2502  fzd["NIOBIUM"] = 410000000;
2503  fzd["NEODYMIU"] = 600000000;
2504  fzd["NEON"] = 100000000;
2505  fzd["ZIRCONIU"] = 400000000;
2506  fzd["NEPTUNIU"] = 930000000; // no fluka
2507  fzd["BORON"] = 50000000;
2508  fzd["COBALT"] = 270000000;
2509  fzd["CURIUM"] = 960000000; // no fluka
2510  fzd["FLUORINE"] = 90000000;
2511  fzd["CALCIUM"] = 200000000;
2512  fzd["CALIFORN"] = 980000000; // no fluka
2513  fzd["CERIUM"] = 580000000;
2514  fzd["CADMIUM"] = 480000000;
2515  fzd["VANADIUM"] = 230000000;
2516  fzd["CESIUM"] = 550000000;
2517  fzd["CHROMIUM"] = 240000000;
2518  fzd["COPPER"] = 290000000;
2519  fzd["STRONTIU"] = 380000000;
2520  fzd["KRYPTON"] = 360000000;
2521  fzd["SILICON"] = 140000000;
2522  fzd["TIN"] = 500000000;
2523  fzd["SAMARIUM"] = 620000000;
2524  fzd["SCANDIUM"] = 210000000;
2525  fzd["ANTIMONY"] = 510000000;
2526  fzd["SEABORGI"] = 1060000000; // no fluka
2527  fzd["SELENIUM"] = 340000000; // no fluka
2528  fzd["YTTERBIU"] = 700000000; // no fluka
2529  fzd["DUBNIUM"] = 1050000000; // no fluka
2530  fzd["DYSPROSI"] = 660000000; // no fluka
2531  fzd["DARMSTAD"] = 1100000000; // no fluka
2532  fzd["LANTHANU"] = 570000000;
2533  fzd["CHLORINE"] = 170000000;
2534  fzd["LITHIUM"] = 030000000;
2535  fzd["THALLIUM"] = 810000000; // no fluka
2536  fzd["LUTETIUM"] = 710000000; // no fluka
2537  fzd["LAWRENCI"] = 1030000000; // no fluka
2538  fzd["THORIUM"] = 900000000; // no fluka
2539  fzd["TITANIUM"] = 220000000;
2540  fzd["TELLURIU"] = 520000000; // no fluka
2541  fzd["TERBIUM"] = 650000000;
2542  fzd["99-TC"] = 430000000; // "99-TC"
2543  fzd["TANTALUM"] = 730000000;
2544  fzd["ACTINIUM"] = 890000000; // no fluka
2545  fzd["SILVER"] = 470000000;
2546  fzd["IODINE"] = 530000000;
2547  fzd["IRIDIUM"] = 770000000;
2548  fzd["241-AM"] = 950000000; // "241-AM"
2549  fzd["ALUMINUM"] = 130000000;
2550  fzd["ARSENIC"] = 330000000;
2551  fzd["ARGON"] = 180000000;
2552  fzd["GOLD"] = 790000000;
2553  fzd["ASTATINE"] = 850000000; // no fluka
2554  fzd["INDIUM"] = 490000000;
2555  fzd["YTTRIUM"] = 390000000;
2556  fzd["XENON"] = 540000000;
2557  fzd["COPERNIC"] = 1120000000; // no fluka
2558  fzd["UNUNQUAD"] = 1140000000; // no fluka: UNUNQUADIUM, "Flerovium"
2559  fzd["UNUNHEXI"] = 1160000000; // no fluka: UNUNHEXIUM , "Livermorium"
2560  fzd["HYDROG-1"] = 10010000;
2561  fzd["DEUTERIU"] = 10020000;
2562  fzd["TRITIUM"] = 10040000;
2563  fzd["HELIUM-3"] = 20030000;
2564  fzd["HELIUM-4"] = 20040000;
2565  fzd["LITHIU-6"] = 30060000;
2566  fzd["LITHIU-7"] = 30070000;
2567  fzd["BORON-10"] = 50100000;
2568  fzd["BORON-11"] = 50110000;
2569  fzd["90-SR"] = 380900000; // fluka "90-SR"
2570  fzd["129-I"] = 531290000; // fluka "129-I"
2571  fzd["124-XE"] = 541240000; // fluka "124-XE"
2572  fzd["126-XE"] = 541260000; // fluka "126-XE"
2573  fzd["128-XE"] = 541280000; // fluka "128-XE"
2574  fzd["130-XE"] = 541300000; // fluka "130-XE"
2575  fzd["131-XE"] = 541310000; // fluka "131-XE"
2576  fzd["132-XE"] = 541320000; // fluka "132-XE"
2577  fzd["134-XE"] = 541340000; // fluka "134-XE"
2578  fzd["135-XE"] = 541350000; // fluka "135-XE"
2579  fzd["136-XE"] = 541360000; // fluka "136-XE"
2580  fzd["135-CS"] = 551350000; // fluka "135-CS"
2581  fzd["137-CS"] = 551370000; // fluka "137-CS"
2582  fzd["230-TH"] = 902300000; // fluka "230-TH"
2583  fzd["232-TH"] = 902320000; // fluka "232-TH"
2584  fzd["233-U"] = 922330000; // fluka "233-U"
2585  fzd["234-U"] = 922340000; // fluka "234-U"
2586  fzd["235-U"] = 922350000; // fluka "235-U"
2587  fzd["238-U"] = 922380000; // fluka "238-U"
2588 
2589  return fzd;
2590 };
2592 
2593 
2594 /*** Constructs zz to fluka dictionary **/
2596 {
2597  zzname_t zfd;
2598  for (name_zz_iter i = fluka_zz.begin(); i != fluka_zz.end(); i++)
2599  {
2600  zfd[i->second] = i->first;
2601  }
2602  return zfd;
2603 };
2605 
2606 
2607 
2608 /******************************************/
2609 /*** Define useful elemental group sets ***/
2610 /******************************************/
2611 
2613 {
2614  zz_group zg;
2615  for (name_group_iter i = eg.begin(); i != eg.end(); i++)
2616  zg.insert(name_zz[*i]);
2617  return zg;
2618 };
2619 
2620 // Lanthanides
2621 pyne::nucname::name_t pyne::nucname::LAN_array[15] = {"La", "Ce", "Pr", "Nd",
2622  "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu"};
2627 
2628 // Actinides
2629 pyne::nucname::name_t pyne::nucname::ACT_array[15] = {"Ac", "Th", "Pa", "U",
2630  "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr"};
2633 
2634 // Transuarnics
2635 pyne::nucname::name_t pyne::nucname::TRU_array[22] = {"Np", "Pu", "Am", "Cm",
2636  "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt",
2637  "Ds", "Rg", "Cn", "Fl", "Lv"};
2642 
2643 //Minor Actinides
2644 pyne::nucname::name_t pyne::nucname::MA_array[10] = {"Np", "Am", "Cm", "Bk",
2645  "Cf", "Es", "Fm", "Md", "No", "Lr"};
2650 
2651 //Fission Products
2652 pyne::nucname::name_t pyne::nucname::FP_array[88] = {"Ag", "Al", "Ar", "As",
2653  "At", "Au", "B", "Ba", "Be", "Bi", "Br", "C", "Ca", "Cd", "Ce", "Cl", "Co",
2654  "Cr", "Cs", "Cu", "Dy", "Er", "Eu", "F", "Fe", "Fr", "Ga", "Gd", "Ge", "H",
2655  "He", "Hf", "Hg", "Ho", "I", "In", "Ir", "K", "Kr", "La", "Li", "Lu", "Mg",
2656  "Mn", "Mo", "N", "Na", "Nb", "Nd", "Ne", "Ni", "O", "Os", "P", "Pb", "Pd",
2657  "Pm", "Po", "Pr", "Pt", "Ra", "Rb", "Re", "Rh", "Rn", "Ru", "S", "Sb", "Sc",
2658  "Se", "Si", "Sm", "Sn", "Sr", "Ta", "Tb", "Tc", "Te", "Ti", "Tl", "Tm", "V",
2659  "W", "Xe", "Y", "Yb", "Zn", "Zr"};
2664 
2665 
2666 /***************************/
2667 /*** isnuclide functions ***/
2668 /***************************/
2669 
2670 bool pyne::nucname::isnuclide(std::string nuc) {
2671  int n;
2672  try {
2673  n = id(nuc);
2674  }
2675  catch(NotANuclide) {
2676  return false;
2677  }
2678  catch(IndeterminateNuclideForm) {
2679  return false;
2680  };
2681  return isnuclide(n);
2682 };
2683 
2684 bool pyne::nucname::isnuclide(const char * nuc) {
2685  return isnuclide(std::string(nuc));
2686 };
2687 
2689  int n;
2690  try {
2691  n = id(nuc);
2692  }
2693  catch(NotANuclide) {
2694  return false;
2695  }
2696  catch(IndeterminateNuclideForm) {
2697  return false;
2698  };
2699  if (n <= 10000000)
2700  return false;
2701  int zzz = n / 10000000;
2702  int aaa = (n % 10000000) / 10000;
2703  if (aaa == 0)
2704  return false; // is element
2705  else if (aaa < zzz)
2706  return false;
2707  return true;
2708 };
2709 
2710 
2711 
2712 /********************/
2713 /*** id functions ***/
2714 /********************/
2715 int pyne::nucname::id(int nuc) {
2716  if (nuc < 0)
2717  throw NotANuclide(nuc, "");
2718 
2719  int newnuc;
2720  int zzz = nuc / 10000000; // ZZZ ?
2721  int aaassss = nuc % 10000000; // AAA-SSSS ?
2722  int aaa = aaassss / 10000; // AAA ?
2723  int ssss = aaassss % 10000; // SSSS ?
2724  // Nuclide must already be in id form
2725  if (0 < zzz && zzz <= aaa && aaa <= zzz * 7) {
2726  // Normal nuclide
2727  if (5 < ssss){
2728  // Unphysical metastable state warning
2729  warning("You have indicated a metastable state of " + pyne::to_str(ssss) + ". Metastable state above 5, possibly unphysical. ");
2730  }
2731  return nuc;
2732  } else if (aaassss == 0 && 0 < zz_name.count(zzz)) {
2733  // Natural elemental nuclide: ie for Uranium = 920000000
2734  return nuc;
2735  } else if (nuc < 1000 && 0 < zz_name.count(nuc))
2736  // Gave Z-number
2737  return nuc * 10000000;
2738 
2739  // Not in id form, try ZZZAAAM form.
2740  zzz = nuc / 10000; // ZZZ ?
2741  aaassss = nuc % 10000; // AAA-SSSS ?
2742  aaa = aaassss / 10; // AAA ?
2743  ssss = nuc % 10; // SSSS ?
2744  if (zzz <= aaa && aaa <= zzz * 7) {
2745  // ZZZAAAM nuclide
2746  if (5 < ssss){
2747  // Unphysical metastable state warning
2748  warning("You have indicated a metastable state of " + pyne::to_str(ssss) + ". Metastable state above 5, possibly unphysical. ");
2749  }
2750  return (zzz*10000000) + (aaa*10000) + (nuc%10);
2751  } else if (aaa <= zzz && zzz <= aaa * 7 && 0 < zz_name.count(aaa)) {
2752  // Cinder-form (aaazzzm), ie 2350920
2753  if (5 < ssss){
2754  // Unphysical metastable state warning
2755  warning("You have indicated a metastable state of " + pyne::to_str(ssss) + ". Metastable state above 5, possibly unphysical. ");
2756  }
2757  return (aaa*10000000) + (zzz*10000) + (nuc%10);
2758  }
2759  //else if (aaassss == 0 && 0 == zz_name.count(nuc/1000) && 0 < zz_name.count(zzz))
2760  else if (aaassss == 0 && 0 < zz_name.count(zzz)) {
2761  // zzaaam form natural nuclide
2762  return zzz * 10000000;
2763  }
2764 
2765  if (nuc >= 1000000){
2766  // From now we assume no metastable info has been given.
2767  throw IndeterminateNuclideForm(nuc, "");
2768  };
2769 
2770  // Nuclide is not in zzaaam form,
2771  // Try MCNP form, ie zzaaa
2772  // This is the same form as SZA for the 0th state.
2773  zzz = nuc / 1000;
2774  aaa = nuc % 1000;
2775  if (zzz <= aaa) {
2776  if (aaa - 400 < 0) {
2777  if (nuc == 95242)
2778  return nuc * 10000 + 1; // special case MCNP Am-242m
2779  else
2780  return nuc * 10000; // Nuclide in normal MCNP form
2781  } else {
2782  // Nuclide in MCNP metastable form
2783  if (nuc == 95642)
2784  return (95642 - 400)*10000; // special case MCNP Am-242
2785  nuc = ((nuc - 400) * 10000) + 1;
2786  while (3.0 < (float ((nuc/10000)%1000) / float (nuc/10000000)))
2787  nuc -= 999999;
2788  return nuc;
2789  }
2790  } else if (aaa == 0 && 0 < zz_name.count(zzz)) {
2791  // MCNP form natural nuclide
2792  return zzz * 10000000;
2793  }
2794 
2795  // Not a normal nuclide, might be a
2796  // Natural elemental nuclide.
2797  // ie 92 for Uranium = 920000
2798  if (0 < zz_name.count(nuc))
2799  return nuc * 10000000;
2800  throw IndeterminateNuclideForm(nuc, "");
2801 };
2802 
2803 int pyne::nucname::id(const char * nuc) {
2804  std::string newnuc (nuc);
2805  return id(newnuc);
2806 };
2807 
2808 int pyne::nucname::id(std::string nuc) {
2809  size_t npos = std::string::npos;
2810  if (nuc.empty())
2811  throw NotANuclide(nuc, "<empty>");
2812  int newnuc;
2813  std::string elem_name;
2814  int dash1 = nuc.find("-");
2815  int dash2;
2816  if (dash1 == npos)
2817  dash2 = npos;
2818  else
2819  dash2 = nuc.find("-", dash1+1);
2820 
2821  // nuc must be at least 4 characters or greater if it is in ZZLLAAAM form.
2822  if (nuc.length() >= 5 && dash1 != npos && dash2 != npos) {
2823  // Nuclide most likely in ZZLLAAAM Form, only form that contains two "-"'s.
2824  std::string zz = nuc.substr(0, dash1);
2825  std::string ll = nuc.substr(dash1+1, dash2);
2826  int zz_int = to_int(zz);
2827  // Verifying that the LL and ZZ point to the same element as secondary
2828  if(znum(ll) != zz_int)
2829  throw NotANuclide(nuc, "mismatched znum and chemical symbol");
2830  return zzllaaam_to_id(nuc);
2831  }
2832 
2833  // Get the string into a regular form
2834  std::string nucstr = pyne::to_upper(nuc);
2835  nucstr = pyne::remove_substring(nucstr, "-");
2836  int nuclen = nucstr.length();
2837 
2838  if (pyne::contains_substring(pyne::digits, nucstr.substr(0, 1))) {
2839  if (pyne::contains_substring(pyne::digits, nucstr.substr(nuclen-1, nuclen))) {
2840  // Nuclide must actually be an integer that
2841  // just happens to be living in string form.
2842  newnuc = pyne::to_int(nucstr);
2843  newnuc = id(newnuc);
2844  } else {
2845  // probably in NIST-like form (242Am)
2846  // Here we know we have both digits and letters
2847  std::string anum_str = pyne::remove_characters(nucstr, pyne::alphabet);
2848  newnuc = pyne::to_int(anum_str) * 10000;
2849 
2850  // Add the Z-number
2851  elem_name = pyne::remove_characters(nucstr, pyne::digits);
2852  elem_name = pyne::capitalize(elem_name);
2853  if (0 < name_zz.count(elem_name))
2854  newnuc = (10000000 * name_zz[elem_name]) + newnuc;
2855  else
2856  throw NotANuclide(nucstr, newnuc);
2857  };
2858  } else if (pyne::contains_substring(pyne::alphabet, nucstr.substr(0, 1))) {
2859  // Nuclide is probably in name form, or some variation therein
2860  std::string anum_str = pyne::remove_characters(nucstr, pyne::alphabet);
2861 
2862  // natural element form, a la 'U' -> 920000000
2863  if (anum_str.empty()) {
2864  elem_name = pyne::capitalize(nucstr);
2865  if (0 < name_zz.count(elem_name))
2866  return 10000000 * name_zz[elem_name];
2867  }
2868 
2869  int anum = pyne::to_int(anum_str);
2870 
2871  // bad form
2872  if (anum < 0)
2873  throw NotANuclide(nucstr, anum);
2874 
2875  // Figure out if we are meta-stable or not
2876  std::string end_char = pyne::last_char(nucstr);
2877  if (end_char == "M")
2878  newnuc = (10000 * anum) + 1;
2879  else if (pyne::contains_substring(pyne::digits, end_char))
2880  newnuc = (10000 * anum);
2881  else
2882  throw NotANuclide(nucstr, newnuc);
2883 
2884  // Add the Z-number
2885  elem_name = pyne::remove_characters(nucstr.substr(0, nuclen-1), pyne::digits);
2886  elem_name = pyne::capitalize(elem_name);
2887  if (0 < name_zz.count(elem_name))
2888  newnuc = (10000000 * name_zz[elem_name]) + newnuc;
2889  else
2890  throw NotANuclide(nucstr, newnuc);
2891  } else {
2892  // Clearly not a nuclide
2893  throw NotANuclide(nuc, nucstr);
2894  }
2895  return newnuc;
2896 };
2897 
2898 
2899 /***************************/
2900 /*** iselement functions ***/
2901 /***************************/
2902 
2903 bool pyne::nucname::iselement(std::string nuc) {
2904  int n;
2905  try {
2906  n = id(nuc);
2907  }
2908  catch(NotANuclide) {
2909  return false;
2910  }
2911  return iselement(n);
2912 };
2913 
2914 bool pyne::nucname::iselement(const char * nuc) {
2915  return iselement(std::string(nuc));
2916 };
2917 
2919  int n;
2920  try {
2921  n = id(nuc);
2922  }
2923  catch(NotANuclide) {
2924  return false;
2925  }
2926 
2927  if (n <= 10000000)
2928  return false;
2929  int zzz = znum(n);
2930  int aaa = anum(n);
2931  if (zzz > 0 && aaa == 0)
2932  return true; // is element
2933  return false;
2934 };
2935 
2936 /**********************/
2937 /*** name functions ***/
2938 /**********************/
2939 std::string pyne::nucname::name(int nuc) {
2940  int nucid = id(nuc);
2941  std::string newnuc = "";
2942 
2943  int zzz = nucid / 10000000;
2944  int ssss = nucid % 10000;
2945  int aaassss = nucid % 10000000;
2946  int aaa = aaassss / 10000;
2947 
2948  // Make sure the LL value is correct
2949  if (0 == zz_name.count(zzz))
2950  throw NotANuclide(nuc, nucid);
2951 
2952  // Add LL
2953  newnuc += zz_name[zzz];
2954 
2955  // Add A-number
2956  if (0 < aaa)
2957  newnuc += pyne::to_str(aaa);
2958 
2959  // Add meta-stable flag
2960  if (0 < ssss)
2961  newnuc += "M";
2962 
2963  return newnuc;
2964 };
2965 
2966 
2967 
2968 std::string pyne::nucname::name(const char * nuc) {
2969  std::string newnuc (nuc);
2970  return name(newnuc);
2971 }
2972 
2973 
2974 std::string pyne::nucname::name(std::string nuc) {
2975  return name(id(nuc));
2976 }
2977 
2978 
2979 /**********************/
2980 /*** znum functions ***/
2981 /**********************/
2982 int pyne::nucname::znum(int nuc) {
2983  return id(nuc) / 10000000;
2984 };
2985 
2986 int pyne::nucname::znum(const char * nuc) {
2987  return id(nuc) / 10000000;
2988 };
2989 
2990 int pyne::nucname::znum(std::string nuc) {
2991  return id(nuc) / 10000000;
2992 };
2993 
2994 /**********************/
2995 /*** anum functions ***/
2996 /**********************/
2997 int pyne::nucname::anum(int nuc) {
2998  return (id(nuc) / 10000) % 1000;
2999 };
3000 
3001 int pyne::nucname::anum(const char * nuc) {
3002  return (id(nuc) / 10000) % 1000;
3003 };
3004 
3005 int pyne::nucname::anum(std::string nuc) {
3006  return (id(nuc) / 10000) % 1000;
3007 };
3008 
3009 /**********************/
3010 /*** snum functions ***/
3011 /**********************/
3012 int pyne::nucname::snum(int nuc) {
3013  return id(nuc) % 10000;
3014 };
3015 
3016 int pyne::nucname::snum(const char * nuc) {
3017  return id(nuc) % 10000;
3018 };
3019 
3020 int pyne::nucname::snum(std::string nuc) {
3021  return id(nuc) % 10000;
3022 };
3023 
3024 /************************/
3025 /*** zzaaam functions ***/
3026 /************************/
3028  int nucid = id(nuc);
3029  int zzzaaa = nucid / 10000;
3030  int ssss = nucid % 10000;
3031  if (10 <= ssss)
3032  ssss = 9;
3033  return zzzaaa*10 + ssss;
3034 };
3035 
3036 
3037 int pyne::nucname::zzaaam(const char * nuc) {
3038  std::string newnuc (nuc);
3039  return zzaaam(newnuc);
3040 };
3041 
3042 
3043 int pyne::nucname::zzaaam(std::string nuc) {
3044  return zzaaam(id(nuc));
3045 };
3046 
3047 
3049  return (nuc/10)*10000 + (nuc%10);
3050 };
3051 
3052 
3053 int pyne::nucname::zzaaam_to_id(const char * nuc) {
3054  return zzaaam_to_id(std::string(nuc));
3055 };
3056 
3057 
3058 int pyne::nucname::zzaaam_to_id(std::string nuc) {
3059  return zzaaam_to_id(pyne::to_int(nuc));
3060 };
3061 
3062 /************************/
3063 /*** zzzaaa functions ***/
3064 /************************/
3066  int nucid = id(nuc);
3067  int zzzaaa = nucid/10000;
3068 
3069  return zzzaaa;
3070 };
3071 
3072 
3073 int pyne::nucname::zzzaaa(const char * nuc) {
3074  std::string newnuc (nuc);
3075  return zzzaaa(newnuc);
3076 };
3077 
3078 
3079 int pyne::nucname::zzzaaa(std::string nuc) {
3080  return zzzaaa(id(nuc));
3081 };
3082 
3083 
3085  return (nuc)*10000;
3086 };
3087 
3088 
3089 int pyne::nucname::zzzaaa_to_id(const char * nuc) {
3090  return zzzaaa_to_id(std::string(nuc));
3091 };
3092 
3093 
3094 int pyne::nucname::zzzaaa_to_id(std::string nuc) {
3095  return zzzaaa_to_id(pyne::to_int(nuc));
3096 };
3097 
3098 /*************************/
3099 /*** zzllaaam functions ***/
3100 /*************************/
3101 std::string pyne::nucname::zzllaaam(int nuc) {
3102  int nucid = id(nuc);
3103  std::string newnuc = "";
3104 
3105  int ssss = nucid % 10000;
3106  int aaassss = nucid % 10000000;
3107  int zzz = nucid / 10000000;
3108  int aaa = aaassss / 10000;
3109 
3110  // Make sure the LL value is correct
3111  if (0 == zz_name.count(zzz))
3112  throw NotANuclide(nuc, nucid);
3113  //Adding ZZ
3114  newnuc += pyne::to_str(zzz);
3115  newnuc += "-";
3116  // Add LL
3117  newnuc += zz_name[zzz];
3118  // Add required dash
3119  newnuc += "-";
3120  // Add AAA
3121  if (0 < aaassss)
3122  newnuc += pyne::to_str(aaa);
3123  // Add meta-stable flag
3124  if (0 < ssss)
3125  newnuc += "m";
3126  return newnuc;
3127 };
3128 
3129 
3130 std::string pyne::nucname::zzllaaam(const char * nuc) {
3131  std::string newnuc (nuc);
3132  return zzllaaam(newnuc);
3133 };
3134 
3135 
3136 std::string pyne::nucname::zzllaaam(std::string nuc) {
3137  return zzllaaam(id(nuc));
3138 };
3139 
3140 
3141 int pyne::nucname::zzllaaam_to_id(const char * nuc) {
3142  return zzllaaam_to_id(std::string(nuc));
3143 };
3144 
3145 
3146 int pyne::nucname::zzllaaam_to_id(std::string nuc) {
3147  if (nuc.empty())
3148  throw NotANuclide(nuc, "<empty>");
3149  int nucid;
3150  std::string elem_name;
3151 
3152  // Get the string into a regular form
3153  std::string nucstr = pyne::to_upper(nuc);
3154  // Removing first two characters (redundant), for 1 digit nuclides, such
3155  // as 2-He-4, the first slash will be removed, and the second attempt to
3156  // remove the second slash will do nothing.
3157  nucstr.erase(0,2);
3158  nucstr = pyne::remove_substring(nucstr, "-");
3159  // Does nothing if nuclide is short, otherwise removes the second "-" instance
3160  nucstr = pyne::remove_substring(nucstr, "-");
3161  int nuclen = nucstr.length();
3162 
3163  // Nuclide is probably in name form, or some variation therein
3164  std::string anum_str = pyne::remove_characters(nucstr, pyne::alphabet);
3165 
3166  // natural element form, a la 'U' -> 920000000
3167  if (anum_str.empty() || pyne::contains_substring(nucstr, "NAT")) {
3168  elem_name = pyne::capitalize(pyne::remove_substring(nucstr, "NAT"));
3169  if (0 < name_zz.count(elem_name))
3170  return 10000000 * name_zz[elem_name];
3171  }
3172  int anum = pyne::to_int(anum_str);
3173 
3174  // Figure out if we are meta-stable or not
3175  std::string end_char = pyne::last_char(nucstr);
3176  if (end_char == "M")
3177  nucid = (10000 * anum) + 1;
3178  else if (pyne::contains_substring(pyne::digits, end_char))
3179  nucid = (10000 * anum);
3180  else
3181  throw NotANuclide(nucstr, nucid);
3182 
3183  // Add the Z-number
3184  elem_name = pyne::remove_characters(nucstr.substr(0, nuclen-1), pyne::digits);
3185  elem_name = pyne::capitalize(elem_name);
3186  if (0 < name_zz.count(elem_name))
3187  nucid = (10000000 * name_zz[elem_name]) + nucid;
3188  else
3189  throw NotANuclide(nucstr, nucid);
3190  return nucid;
3191 };
3192 
3193 /**********************/
3194 /*** mcnp functions ***/
3195 /**********************/
3196 int pyne::nucname::mcnp(int nuc) {
3197  nuc = id(nuc);
3198  int ssss = nuc % 10000;
3199  int newnuc = nuc / 10000;
3200 
3201  // special case Am242(m)
3202  if (newnuc == 95242 && ssss < 2)
3203  ssss = (ssss + 1) % 2;
3204 
3205  // Handle the crazy MCNP meta-stable format
3206  if (0 != ssss && ssss < 10)
3207  newnuc += 300 + (ssss * 100);
3208 
3209  return newnuc;
3210 };
3211 
3212 
3213 
3214 int pyne::nucname::mcnp(const char * nuc) {
3215  std::string newnuc (nuc);
3216  return mcnp(newnuc);
3217 };
3218 
3219 
3220 
3221 int pyne::nucname::mcnp(std::string nuc) {
3222  return mcnp(id(nuc));
3223 };
3224 
3225 //
3226 // MCNP -> id
3227 //
3229  int zzz = nuc / 1000;
3230  int aaa = nuc % 1000;
3231  if (zzz == 0)
3232  throw NotANuclide(nuc, "not in the MCNP format");
3233  else if (zzz <= aaa) {
3234  if (aaa - 400 < 0) {
3235  if (nuc == 95242)
3236  return nuc * 10000 + 1; // special case MCNP Am-242m
3237  else
3238  return nuc * 10000; // Nuclide in normal MCNP form
3239  } else {
3240  // Nuclide in MCNP metastable form
3241  if (nuc == 95642)
3242  return (95642 - 400)*10000; // special case MCNP Am-242
3243  nuc = ((nuc - 400) * 10000) + 1;
3244  while (3.0 < (float ((nuc/10000)%1000) / float (nuc/10000000)))
3245  nuc -= 999999;
3246  return nuc;
3247  }
3248  } else if (aaa == 0)
3249  // MCNP form natural nuclide
3250  return zzz * 10000000;
3251  throw IndeterminateNuclideForm(nuc, "");
3252 };
3253 
3254 
3255 int pyne::nucname::mcnp_to_id(const char * nuc) {
3256  return mcnp_to_id(std::string(nuc));
3257 };
3258 
3259 
3260 int pyne::nucname::mcnp_to_id(std::string nuc) {
3261  return mcnp_to_id(pyne::to_int(nuc));
3262 };
3263 
3264 
3265 /**********************/
3266 /*** fluka functions ***/
3267 /**********************/
3268 std::string pyne::nucname::fluka(int nuc) {
3269  int x = id(nuc);
3270  if (zz_fluka.count(x) == 0) {
3271  throw NotANuclide(nuc, "fluka name could not be found");
3272  }
3273  return zz_fluka[x];
3274 };
3275 
3276 
3277 //
3278 // FLUKA name -> id
3279 //
3281  if (fluka_zz.count(name) == 0) {
3282  throw NotANuclide(-1, "No nuclide: fluka name could not be found");
3283  }
3284  return fluka_zz[name];
3285 }
3286 
3288  return fluka_to_id(std::string(name));
3289 }
3290 
3291 
3292 /*************************/
3293 /*** serpent functions ***/
3294 /*************************/
3295 std::string pyne::nucname::serpent(int nuc) {
3296  int nucid = id(nuc);
3297  std::string newnuc = "";
3298 
3299  int ssss = nucid % 10000;
3300  int aaassss = nucid % 10000000;
3301  int zzz = nucid / 10000000;
3302  int aaa = aaassss / 10000;
3303 
3304  // Make sure the LL value is correct
3305  if (0 == zz_name.count(zzz))
3306  throw NotANuclide(nuc, nucid);
3307 
3308  // Add LL
3309  std::string llupper = pyne::to_upper(zz_name[zzz]);
3310  std::string lllower = pyne::to_lower(zz_name[zzz]);
3311  newnuc += llupper[0];
3312  for (int l = 1; l < lllower.size(); l++)
3313  newnuc += lllower[l];
3314 
3315  // Add required dash
3316  newnuc += "-";
3317 
3318  // Add A-number
3319  if (0 < aaassss)
3320  newnuc += pyne::to_str(aaa);
3321  else if (0 == aaassss)
3322  newnuc += "nat";
3323 
3324  // Add meta-stable flag
3325  if (0 < ssss)
3326  newnuc += "m";
3327 
3328  return newnuc;
3329 };
3330 
3331 
3332 std::string pyne::nucname::serpent(const char * nuc) {
3333  std::string newnuc (nuc);
3334  return serpent(newnuc);
3335 };
3336 
3337 
3338 std::string pyne::nucname::serpent(std::string nuc) {
3339  return serpent(id(nuc));
3340 };
3341 
3342 //
3343 // Serpent -> id
3344 //
3345 //int pyne::nucname::serpent_to_id(int nuc)
3346 //{
3347 // Should be ZAID
3348 //};
3349 
3350 
3351 int pyne::nucname::serpent_to_id(const char * nuc) {
3352  return serpent_to_id(std::string(nuc));
3353 };
3354 
3355 
3356 int pyne::nucname::serpent_to_id(std::string nuc) {
3357  if (nuc.empty())
3358  throw NotANuclide(nuc, "<empty>");
3359  int nucid;
3360  std::string elem_name;
3361 
3362  // Get the string into a regular form
3363  std::string nucstr = pyne::to_upper(nuc);
3364  nucstr = pyne::remove_substring(nucstr, "-");
3365  int nuclen = nucstr.length();
3366 
3367  // Nuclide is probably in name form, or some variation therein
3368  std::string anum_str = pyne::remove_characters(nucstr, pyne::alphabet);
3369 
3370  // natural element form, a la 'U' -> 920000000
3371  if (anum_str.empty() || pyne::contains_substring(nucstr, "NAT")) {
3372  elem_name = pyne::capitalize(pyne::remove_substring(nucstr, "NAT"));
3373  if (0 < name_zz.count(elem_name))
3374  return 10000000 * name_zz[elem_name];
3375  }
3376  int anum = pyne::to_int(anum_str);
3377 
3378  // Figure out if we are meta-stable or not
3379  std::string end_char = pyne::last_char(nucstr);
3380  if (end_char == "M")
3381  nucid = (10000 * anum) + 1;
3382  else if (pyne::contains_substring(pyne::digits, end_char))
3383  nucid = (10000 * anum);
3384  else
3385  throw NotANuclide(nucstr, nucid);
3386 
3387  // Add the Z-number
3388  elem_name = pyne::remove_characters(nucstr.substr(0, nuclen-1), pyne::digits);
3389  elem_name = pyne::capitalize(elem_name);
3390  if (0 < name_zz.count(elem_name))
3391  nucid = (10000000 * name_zz[elem_name]) + nucid;
3392  else
3393  throw NotANuclide(nucstr, nucid);
3394  return nucid;
3395 };
3396 
3397 
3398 /**********************/
3399 /*** nist functions ***/
3400 /**********************/
3401 std::string pyne::nucname::nist(int nuc) {
3402  int nucid = id(nuc);
3403  std::string newnuc = "";
3404 
3405  int zzz = nucid / 10000000;
3406  int ssss = nucid % 10000;
3407  int aaassss = nucid % 10000000;
3408  int aaa = aaassss / 10000;
3409 
3410  // Make sure the LL value is correct
3411  if (0 == zz_name.count(zzz))
3412  throw NotANuclide(nuc, nucid);
3413 
3414  // Add A-number
3415  if (0 < aaassss)
3416  newnuc += pyne::to_str(aaa);
3417 
3418  // Add name
3419  std::string name_upper = pyne::to_upper(zz_name[zzz]);
3420  std::string name_lower = pyne::to_lower(zz_name[zzz]);
3421  newnuc += name_upper[0];
3422  for (int l = 1; l < name_lower.size(); l++)
3423  newnuc += name_lower[l];
3424 
3425  // Add meta-stable flag
3426  // No metastable flag for NIST,
3427  // but could add star, by uncommenting below
3428  //if (0 < mod_10)
3429  // newnuc += "*";
3430 
3431  return newnuc;
3432 };
3433 
3434 
3435 std::string pyne::nucname::nist(const char * nuc) {
3436  std::string newnuc (nuc);
3437  return nist(newnuc);
3438 };
3439 
3440 
3441 std::string pyne::nucname::nist(std::string nuc) {
3442  return nist(id(nuc));
3443 };
3444 
3445 
3446 //
3447 // NIST -> id
3448 //
3449 //int pyne::nucname::nist_to_id(int nuc)
3450 //{
3451 // NON-EXISTANT
3452 //};
3453 
3454 int pyne::nucname::nist_to_id(const char * nuc) {
3455  return nist_to_id(std::string(nuc));
3456 };
3457 
3458 int pyne::nucname::nist_to_id(std::string nuc) {
3459  if (nuc.empty())
3460  throw NotANuclide(nuc, "<empty>");
3461  int nucid;
3462  nuc = pyne::to_upper(nuc);
3463  std::string elem_name;
3464  int nuclen = nuc.length();
3465 
3466  // Nuclide is probably in name form, or some variation therein
3467  std::string anum_str = pyne::remove_characters(nuc, pyne::alphabet);
3468 
3469  // natural element form, a la 'U' -> 920000000
3470  if (anum_str.empty()) {
3471  elem_name = pyne::capitalize(nuc);
3472  if (0 < name_zz.count(elem_name))
3473  return 10000000 * name_zz[elem_name];
3474  }
3475  nucid = pyne::to_int(anum_str) * 10000;
3476 
3477  // Add the Z-number
3478  elem_name = pyne::remove_characters(nuc, pyne::digits);
3479  elem_name = pyne::capitalize(elem_name);
3480  if (0 < name_zz.count(elem_name))
3481  nucid = (10000000 * name_zz[elem_name]) + nucid;
3482  else
3483  throw NotANuclide(nuc, nucid);
3484  return nucid;
3485 };
3486 
3487 
3488 /************************/
3489 /*** cinder functions ***/
3490 /************************/
3492  // cinder nuclides of form aaazzzm
3493  int nucid = id(nuc);
3494  int zzz = nucid / 10000000;
3495  int ssss = nucid % 10000;
3496  int aaassss = nucid % 10000000;
3497  int aaa = aaassss / 10000;
3498  if (10 <= ssss)
3499  ssss = 9;
3500  return (aaa*10000) + (zzz*10) + ssss;
3501 };
3502 
3503 
3504 
3505 int pyne::nucname::cinder(const char * nuc) {
3506  std::string newnuc (nuc);
3507  return cinder(newnuc);
3508 };
3509 
3510 
3511 
3512 int pyne::nucname::cinder(std::string nuc) {
3513  return cinder(id(nuc));
3514 };
3515 
3516 //
3517 // Cinder -> Id
3518 //
3520  int ssss = nuc % 10;
3521  int aaazzz = nuc / 10;
3522  int zzz = aaazzz % 1000;
3523  int aaa = aaazzz / 1000;
3524  return (zzz * 10000000) + (aaa * 10000) + ssss;
3525 };
3526 
3527 
3528 int pyne::nucname::cinder_to_id(const char * nuc) {
3529  return cinder_to_id(std::string(nuc));
3530 };
3531 
3532 
3533 int pyne::nucname::cinder_to_id(std::string nuc) {
3534  return cinder_to_id(pyne::to_int(nuc));
3535 };
3536 
3537 
3538 
3539 
3540 /**********************/
3541 /*** ALARA functions ***/
3542 /**********************/
3543 std::string pyne::nucname::alara(int nuc) {
3544  int nucid = id(nuc);
3545  std::string newnuc = "";
3546  std::string ll = "";
3547 
3548  int zzz = nucid / 10000000;
3549  int ssss = nucid % 10000;
3550  int aaassss = nucid % 10000000;
3551  int aaa = aaassss / 10000;
3552 
3553  // Make sure the LL value is correct
3554  if (0 == zz_name.count(zzz))
3555  throw NotANuclide(nuc, nucid);
3556 
3557  // Add LL, in lower case
3558  ll += zz_name[zzz];
3559 
3560  for(int i = 0; ll[i] != '\0'; i++)
3561  ll[i] = tolower(ll[i]);
3562  newnuc += ll;
3563 
3564  // Add A-number
3565  if (0 < aaassss){
3566  newnuc += ":";
3567  newnuc += pyne::to_str(aaa);
3568  }
3569 
3570  // Note, ALARA input format does not use metastable flag
3571  return newnuc;
3572 };
3573 
3574 
3575 std::string pyne::nucname::alara(const char * nuc) {
3576  std::string newnuc (nuc);
3577  return alara(newnuc);
3578 }
3579 
3580 
3581 std::string pyne::nucname::alara(std::string nuc) {
3582  return alara(id(nuc));
3583 }
3584 
3585 
3586 //
3587 // Cinder -> Id
3588 //
3589 //int pyne::nucname::alara_to_id(int nuc)
3590 //{
3591 // Not Possible
3592 //};
3593 
3594 
3595 int pyne::nucname::alara_to_id(const char * nuc) {
3596  return alara_to_id(std::string(nuc));
3597 };
3598 
3599 
3600 int pyne::nucname::alara_to_id(std::string nuc) {
3601  if (nuc.empty())
3602  throw NotANuclide(nuc, "<empty>");
3603  int nucid;
3604  nuc = pyne::to_upper(pyne::remove_characters(nuc, ":"));
3605  std::string elem_name;
3606  int nuclen = nuc.length();
3607 
3608  // Nuclide is probably in name form, or some variation therein
3609  std::string anum_str = pyne::remove_characters(nuc, pyne::alphabet);
3610 
3611  // natural element form, a la 'U' -> 920000000
3612  if (anum_str.empty()) {
3613  elem_name = pyne::capitalize(nuc);
3614  if (0 < name_zz.count(elem_name))
3615  return 10000000 * name_zz[elem_name];
3616  }
3617  nucid = pyne::to_int(anum_str) * 10000;
3618 
3619  // Add the Z-number
3620  elem_name = pyne::remove_characters(nuc, pyne::digits);
3621  elem_name = pyne::capitalize(elem_name);
3622  if (0 < name_zz.count(elem_name))
3623  nucid = (10000000 * name_zz[elem_name]) + nucid;
3624  else
3625  throw NotANuclide(nuc, nucid);
3626  return nucid;
3627 };
3628 
3629 
3630 
3631 
3632 /***********************/
3633 /*** SZA functions ***/
3634 /***********************/
3635 int pyne::nucname::sza(int nuc) {
3636  int nucid = id(nuc);
3637  int zzzaaa = nucid / 10000;
3638  int sss = nucid % 10000;
3639  return sss * 1000000 + zzzaaa;
3640 }
3641 
3642 
3643 int pyne::nucname::sza(const char * nuc) {
3644  std::string newnuc (nuc);
3645  return sza(newnuc);
3646 }
3647 
3648 
3649 int pyne::nucname::sza(std::string nuc) {
3650  return sza(id(nuc));
3651 }
3652 
3653 
3655  int sss = nuc / 1000000;
3656  int zzzaaa = nuc % 1000000;
3657  if (5 < sss){
3658  // Unphysical metastable state warning
3659  warning("You have indicated a metastable state of " + pyne::to_str(sss) + ". Metastable state above 5, possibly unphysical. ");
3660  }
3661  return zzzaaa * 10000 + sss;
3662 }
3663 
3664 
3665 int pyne::nucname::sza_to_id(const char * nuc) {
3666  std::string newnuc (nuc);
3667  return sza_to_id(newnuc);
3668 }
3669 
3670 
3671 int pyne::nucname::sza_to_id(std::string nuc) {
3672  return sza_to_id(pyne::to_int(nuc));
3673 }
3674 
3675 
3677  for (int i = 0; i < TOTAL_STATE_MAPS; ++i) {
3679  }
3680 }
3681 
3683  int zzzaaa = (state / 10000) * 10000;
3684  int state_number = state % 10000;
3685  if (state_number == 0) return state;
3686  std::map<int, int>::iterator nuc_iter, nuc_end;
3687 
3688  nuc_iter = state_id_map.find(state);
3689  nuc_end = state_id_map.end();
3690  if (nuc_iter != nuc_end){
3691  int m = (*nuc_iter).second;
3692  return zzzaaa + m;
3693  }
3694 
3695  if (state_id_map.empty()) {
3696  _load_state_map();
3697  return state_id_to_id(state);
3698  }
3699  throw IndeterminateNuclideForm(state, "no matching metastable state");
3700 }
3701 
3702 
3704  int zzzaaa = (nuc_id / 10000) * 10000;
3705  int state = nuc_id % 10000;
3706  if (state == 0) return nuc_id;
3707  std::map<int, int>::iterator nuc_iter, nuc_end, it;
3708 
3709  nuc_iter = state_id_map.lower_bound(nuc_id);
3710  nuc_end = state_id_map.upper_bound(nuc_id + 10000);
3711  for (it = nuc_iter; it!= nuc_end; ++it){
3712  if (state == it->second) {
3713  return it->first;
3714  }
3715  }
3716  int m = (*nuc_iter).second;
3717 
3718  if (state_id_map.empty()) {
3719  _load_state_map();
3720  return id_to_state_id(nuc_id);
3721  }
3722  throw IndeterminateNuclideForm(state, "no matching state id");
3723 }
3724 
3725 
3726 /************************/
3727 /*** ENSDF functions ***/
3728 /************************/
3729 //
3730 // ENSDF -> Id
3731 //
3732 
3733 int pyne::nucname::ensdf_to_id(const char * nuc) {
3734  return ensdf_to_id(std::string(nuc));
3735 };
3736 
3737 int pyne::nucname::ensdf_to_id(std::string nuc) {
3738  if (nuc.size() < 4) {
3739  return nucname::id(nuc);
3740  } else if (std::isdigit(nuc[3])) {
3741  int aaa = to_int(nuc.substr(0, 3));
3742  int zzz;
3743  std::string xx_str = nuc.substr(3,2);
3744  zzz = to_int(xx_str) + 100;
3745  int nid = 10000 * aaa + 10000000 * zzz;
3746  return nid;
3747  } else {
3748  return nucname::id(nuc);
3749  }
3750 
3751 };
3752 
3753 //
3754 // end of src/nucname.cpp
3755 //
3756 
3757 
3758 //
3759 // start of src/rxname.cpp
3760 //
3761 #ifndef PYNE_IS_AMALGAMATED
3762 #include "rxname.h"
3763 #endif
3764 
3766  "total",
3767  "scattering",
3768  "elastic",
3769  "nonelastic",
3770  "n",
3771  "misc",
3772  "continuum",
3773  "z_2nd",
3774  "z_2n",
3775  "z_2n_0",
3776  "z_2n_1",
3777  "z_2n_2",
3778  "z_3n",
3779  "z_3n_0",
3780  "z_3n_1",
3781  "z_3n_2",
3782  "fission",
3783  "fission_first",
3784  "fission_second",
3785  "fission_third",
3786  "na",
3787  "na_0",
3788  "na_1",
3789  "na_2",
3790  "n3a",
3791  "z_2na",
3792  "z_3na",
3793  "absorption",
3794  "np",
3795  "np_0",
3796  "np_1",
3797  "np_2",
3798  "npd",
3799  "n2a",
3800  "z_2n2a",
3801  "nd",
3802  "nd_0",
3803  "nd_1",
3804  "nd_2",
3805  "nt",
3806  "nt_0",
3807  "nt_1",
3808  "nt_2",
3809  "nHe3",
3810  "nHe3_0",
3811  "nHe3_1",
3812  "nHe3_2",
3813  "nd3a",
3814  "nt2a",
3815  "z_4n",
3816  "z_4n_0",
3817  "z_4n_1",
3818  "fission_fourth",
3819  "z_2np",
3820  "z_3np",
3821  "n2p",
3822  "npa",
3823  "n_0",
3824  "n_1",
3825  "n_2",
3826  "n_3",
3827  "n_4",
3828  "n_5",
3829  "n_6",
3830  "n_7",
3831  "n_8",
3832  "n_9",
3833  "n_10",
3834  "n_11",
3835  "n_12",
3836  "n_13",
3837  "n_14",
3838  "n_15",
3839  "n_16",
3840  "n_17",
3841  "n_18",
3842  "n_19",
3843  "n_20",
3844  "n_21",
3845  "n_22",
3846  "n_23",
3847  "n_24",
3848  "n_25",
3849  "n_26",
3850  "n_27",
3851  "n_28",
3852  "n_29",
3853  "n_30",
3854  "n_31",
3855  "n_32",
3856  "n_33",
3857  "n_34",
3858  "n_35",
3859  "n_36",
3860  "n_37",
3861  "n_38",
3862  "n_39",
3863  "n_40",
3864  "n_continuum",
3865  "disappearance",
3866  "gamma",
3867  "gamma_0",
3868  "gamma_1",
3869  "gamma_2",
3870  "p",
3871  "d",
3872  "t",
3873  "He3",
3874  "a",
3875  "z_2a",
3876  "z_3a",
3877  "z_2p",
3878  "z_2p_0",
3879  "z_2p_1",
3880  "z_2p_2",
3881  "pa",
3882  "t2a",
3883  "d2a",
3884  "pd",
3885  "pt",
3886  "da",
3887  "resonance_parameters",
3888  "n_total",
3889  "gamma_total",
3890  "p_total",
3891  "d_total",
3892  "t_total",
3893  "He3_total",
3894  "a_total",
3895  "pionp",
3896  "pion0",
3897  "pionm",
3898  "muonp",
3899  "muonm",
3900  "kaonp",
3901  "kaon0_long",
3902  "kaon0_short",
3903  "kaonm",
3904  "antip",
3905  "antin",
3906  "mubar",
3907  "epsilon",
3908  "y",
3909  "erel_total",
3910  "erel_elastic",
3911  "erel_nonelastic",
3912  "erel_n",
3913  "erel_misc",
3914  "erel_continuum",
3915  "erel_2nd",
3916  "erel_2n",
3917  "erel_3n",
3918  "erel_fission",
3919  "erel_fission_first",
3920  "erel_fission_second",
3921  "erel_fission_third",
3922  "erel_na",
3923  "erel_n3a",
3924  "erel_2na",
3925  "erel_3na",
3926  "erel_absorption",
3927  "erel_np",
3928  "erel_n2a",
3929  "erel_2n2a",
3930  "erel_nd",
3931  "erel_nt",
3932  "erel_nHe3",
3933  "erel_nd3a",
3934  "erel_nt2a",
3935  "erel_4n",
3936  "erel_fission_fourth",
3937  "erel_2np",
3938  "erel_3np",
3939  "erel_n2p",
3940  "erel_npa",
3941  "erel_n_0",
3942  "erel_n_1",
3943  "erel_n_2",
3944  "erel_n_3",
3945  "erel_n_4",
3946  "erel_n_5",
3947  "erel_n_6",
3948  "erel_n_7",
3949  "erel_n_8",
3950  "erel_n_9",
3951  "erel_n_10",
3952  "erel_n_11",
3953  "erel_n_12",
3954  "erel_n_13",
3955  "erel_n_14",
3956  "erel_n_15",
3957  "erel_n_16",
3958  "erel_n_17",
3959  "erel_n_18",
3960  "erel_n_19",
3961  "erel_n_20",
3962  "erel_n_21",
3963  "erel_n_22",
3964  "erel_n_23",
3965  "erel_n_24",
3966  "erel_n_25",
3967  "erel_n_26",
3968  "erel_n_27",
3969  "erel_n_28",
3970  "erel_n_29",
3971  "erel_n_30",
3972  "erel_n_31",
3973  "erel_n_32",
3974  "erel_n_33",
3975  "erel_n_34",
3976  "erel_n_35",
3977  "erel_n_36",
3978  "erel_n_37",
3979  "erel_n_38",
3980  "erel_n_39",
3981  "erel_n_40",
3982  "erel_n_continuum",
3983  "erel_disappearance",
3984  "erel_gamma",
3985  "erel_p",
3986  "erel_d",
3987  "erel_t",
3988  "erel_He3",
3989  "erel_a",
3990  "erel_2a",
3991  "erel_3a",
3992  "erel_2p",
3993  "erel_pa",
3994  "erel_t2a",
3995  "erel_d2a",
3996  "erel_pd",
3997  "erel_pt",
3998  "erel_da",
3999  "damage",
4000  "heading",
4001  "nubar",
4002  "fission_product_yield_independent",
4003  "nubar_delayed",
4004  "nubar_prompt",
4005  "decay",
4006  "energy_per_fission",
4007  "fission_product_yield_cumulative",
4008  "gamma_delayed",
4009  "stopping_power",
4010  "photon_total",
4011  "photon_coherent",
4012  "photon_incoherent",
4013  "scattering_factor_imag",
4014  "scattering_factor_real",
4015  "pair_prod_elec",
4016  "pair_prod",
4017  "pair_prod_nuc",
4018  "absorption_photoelectric",
4019  "photoexcitation",
4020  "scattering_electroatomic",
4021  "bremsstrahlung",
4022  "excitation_electroatomic",
4023  "atomic_relaxation",
4024  "k_photoelectric",
4025  "l1_photoelectric",
4026  "l2_photoelectric",
4027  "l3_photoelectric",
4028  "m1_photoelectric",
4029  "m2_photoelectric",
4030  "m3_photoelectric",
4031  "m4_photoelectric",
4032  "m5_photoelectric",
4033  "n1_photoelectric",
4034  "n2_photoelectric",
4035  "n3_photoelectric",
4036  "n4_photoelectric",
4037  "n5_photoelectric",
4038  "n6_photoelectric",
4039  "n7_photoelectric",
4040  "o1_photoelectric",
4041  "o2_photoelectric",
4042  "o3_photoelectric",
4043  "o4_photoelectric",
4044  "o5_photoelectric",
4045  "o6_photoelectric",
4046  "o7_photoelectric",
4047  "o8_photoelectric",
4048  "o9_photoelectric",
4049  "p1_photoelectric",
4050  "p2_photoelectric",
4051  "p3_photoelectric",
4052  "p4_photoelectric",
4053  "p5_photoelectric",
4054  "p6_photoelectric",
4055  "p7_photoelectric",
4056  "p8_photoelectric",
4057  "p9_photoelectric",
4058  "p10_photoelectric",
4059  "p11_photoelectric",
4060  "q1_photoelectric",
4061  "q2_photoelectric",
4062  "q3_photoelectric",
4063  "p_0",
4064  "p_1",
4065  "p_2",
4066  "p_3",
4067  "p_4",
4068  "p_5",
4069  "p_6",
4070  "p_7",
4071  "p_8",
4072  "p_9",
4073  "p_10",
4074  "p_11",
4075  "p_12",
4076  "p_13",
4077  "p_14",
4078  "p_15",
4079  "p_16",
4080  "p_17",
4081  "p_18",
4082  "p_19",
4083  "p_20",
4084  "p_21",
4085  "p_22",
4086  "p_23",
4087  "p_24",
4088  "p_25",
4089  "p_26",
4090  "p_27",
4091  "p_28",
4092  "p_29",
4093  "p_30",
4094  "p_31",
4095  "p_32",
4096  "p_33",
4097  "p_34",
4098  "p_35",
4099  "p_36",
4100  "p_37",
4101  "p_38",
4102  "p_39",
4103  "p_40",
4104  "p_41",
4105  "p_42",
4106  "p_43",
4107  "p_44",
4108  "p_45",
4109  "p_46",
4110  "p_47",
4111  "p_48",
4112  "p_continuum",
4113  "d_0",
4114  "d_1",
4115  "d_2",
4116  "d_3",
4117  "d_4",
4118  "d_5",
4119  "d_6",
4120  "d_7",
4121  "d_8",
4122  "d_9",
4123  "d_10",
4124  "d_11",
4125  "d_12",
4126  "d_13",
4127  "d_14",
4128  "d_15",
4129  "d_16",
4130  "d_17",
4131  "d_18",
4132  "d_19",
4133  "d_20",
4134  "d_21",
4135  "d_22",
4136  "d_23",
4137  "d_24",
4138  "d_25",
4139  "d_26",
4140  "d_27",
4141  "d_28",
4142  "d_29",
4143  "d_30",
4144  "d_31",
4145  "d_32",
4146  "d_33",
4147  "d_34",
4148  "d_35",
4149  "d_36",
4150  "d_37",
4151  "d_38",
4152  "d_39",
4153  "d_40",
4154  "d_41",
4155  "d_42",
4156  "d_43",
4157  "d_44",
4158  "d_45",
4159  "d_46",
4160  "d_47",
4161  "d_48",
4162  "d_continuum",
4163  "t_0",
4164  "t_1",
4165  "t_2",
4166  "t_3",
4167  "t_4",
4168  "t_5",
4169  "t_6",
4170  "t_7",
4171  "t_8",
4172  "t_9",
4173  "t_10",
4174  "t_11",
4175  "t_12",
4176  "t_13",
4177  "t_14",
4178  "t_15",
4179  "t_16",
4180  "t_17",
4181  "t_18",
4182  "t_19",
4183  "t_20",
4184  "t_21",
4185  "t_22",
4186  "t_23",
4187  "t_24",
4188  "t_25",
4189  "t_26",
4190  "t_27",
4191  "t_28",
4192  "t_29",
4193  "t_30",
4194  "t_31",
4195  "t_32",
4196  "t_33",
4197  "t_34",
4198  "t_35",
4199  "t_36",
4200  "t_37",
4201  "t_38",
4202  "t_39",
4203  "t_40",
4204  "t_41",
4205  "t_42",
4206  "t_43",
4207  "t_44",
4208  "t_45",
4209  "t_46",
4210  "t_47",
4211  "t_48",
4212  "t_continuum",
4213  "He3_0",
4214  "He3_1",
4215  "He3_2",
4216  "He3_3",
4217  "He3_4",
4218  "He3_5",
4219  "He3_6",
4220  "He3_7",
4221  "He3_8",
4222  "He3_9",
4223  "He3_10",
4224  "He3_11",
4225  "He3_12",
4226  "He3_13",
4227  "He3_14",
4228  "He3_15",
4229  "He3_16",
4230  "He3_17",
4231  "He3_18",
4232  "He3_19",
4233  "He3_20",
4234  "He3_21",
4235  "He3_22",
4236  "He3_23",
4237  "He3_24",
4238  "He3_25",
4239  "He3_26",
4240  "He3_27",
4241  "He3_28",
4242  "He3_29",
4243  "He3_30",
4244  "He3_31",
4245  "He3_32",
4246  "He3_33",
4247  "He3_34",
4248  "He3_35",
4249  "He3_36",
4250  "He3_37",
4251  "He3_38",
4252  "He3_39",
4253  "He3_40",
4254  "He3_41",
4255  "He3_42",
4256  "He3_43",
4257  "He3_44",
4258  "He3_45",
4259  "He3_46",
4260  "He3_47",
4261  "He3_48",
4262  "He3_continuum",
4263  "a_0",
4264  "a_1",
4265  "a_2",
4266  "a_3",
4267  "a_4",
4268  "a_5",
4269  "a_6",
4270  "a_7",
4271  "a_8",
4272  "a_9",
4273  "a_10",
4274  "a_11",
4275  "a_12",
4276  "a_13",
4277  "a_14",
4278  "a_15",
4279  "a_16",
4280  "a_17",
4281  "a_18",
4282  "a_19",
4283  "a_20",
4284  "a_21",
4285  "a_22",
4286  "a_23",
4287  "a_24",
4288  "a_25",
4289  "a_26",
4290  "a_27",
4291  "a_28",
4292  "a_29",
4293  "a_30",
4294  "a_31",
4295  "a_32",
4296  "a_33",
4297  "a_34",
4298  "a_35",
4299  "a_36",
4300  "a_37",
4301  "a_38",
4302  "a_39",
4303  "a_40",
4304  "a_41",
4305  "a_42",
4306  "a_43",
4307  "a_44",
4308  "a_45",
4309  "a_46",
4310  "a_47",
4311  "a_48",
4312  "a_continuum",
4313  "lumped_covar",
4314  "excited",
4315  "bminus",
4316  "bplus",
4317  "ec",
4318  "bminus_n",
4319  "bminus_a",
4320  "it",
4321  "bplus_a",
4322  "ec_bplus",
4323  "bplus_p",
4324  "bminus_2n",
4325  "bminus_3n",
4326  "bminus_4n",
4327  "ecp",
4328  "eca",
4329  "bplus_2p",
4330  "ec_2p",
4331  "decay_2bminus",
4332  "bminus_p",
4333  "decay_14c",
4334  "bplus_3p",
4335  "sf",
4336  "decay_2bplus",
4337  "decay_2ec"
4338  };
4339 std::set<std::string> pyne::rxname::names(pyne::rxname::_names,
4341 
4342 
4343 std::map<std::string, unsigned int> pyne::rxname::altnames;
4344 std::map<unsigned int, std::string> pyne::rxname::id_name;
4345 std::map<std::string, unsigned int> pyne::rxname::name_id;
4346 std::map<unsigned int, unsigned int> pyne::rxname::id_mt;
4347 std::map<unsigned int, unsigned int> pyne::rxname::mt_id;
4348 std::map<unsigned int, std::string> pyne::rxname::labels;
4349 std::map<unsigned int, std::string> pyne::rxname::docs;
4350 std::map<std::pair<std::string, int>, unsigned int> pyne::rxname::offset_id;
4351 std::map<std::pair<std::string, unsigned int>, int> pyne::rxname::id_offset;
4352 
4354  using std::make_pair;
4355  std::string rx;
4356  unsigned int rxid;
4357  unsigned int _mts [NUM_RX_NAMES] = {
4358  1,
4359  0,
4360  2,
4361  3,
4362  4,
4363  5,
4364  10,
4365  11,
4366  16,
4367  0,
4368  0,
4369  0,
4370  17,
4371  0,
4372  0,
4373  0,
4374  18,
4375  19,
4376  20,
4377  21,
4378  22,
4379  0,
4380  0,
4381  0,
4382  23,
4383  24,
4384  25,
4385  27,
4386  28,
4387  0,
4388  0,
4389  0,
4390  0,
4391  29,
4392  30,
4393  32,
4394  0,
4395  0,
4396  0,
4397  33,
4398  0,
4399  0,
4400  0,
4401  34,
4402  0,
4403  0,
4404  0,
4405  35,
4406  36,
4407  37,
4408  0,
4409  0,
4410  38,
4411  41,
4412  42,
4413  44,
4414  45,
4415  50,
4416  51,
4417  52,
4418  53,
4419  54,
4420  55,
4421  56,
4422  57,
4423  58,
4424  59,
4425  60,
4426  61,
4427  62,
4428  63,
4429  64,
4430  65,
4431  66,
4432  67,
4433  68,
4434  69,
4435  70,
4436  71,
4437  72,
4438  73,
4439  74,
4440  75,
4441  76,
4442  77,
4443  78,
4444  79,
4445  80,
4446  81,
4447  82,
4448  83,
4449  84,
4450  85,
4451  86,
4452  87,
4453  88,
4454  89,
4455  90,
4456  91,
4457  101,
4458  102,
4459  0,
4460  0,
4461  0,
4462  103,
4463  104,
4464  105,
4465  106,
4466  107,
4467  108,
4468  109,
4469  111,
4470  0,
4471  0,
4472  0,
4473  112,
4474  113,
4475  114,
4476  115,
4477  116,
4478  117,
4479  151,
4480  201,
4481  202,
4482  203,
4483  204,
4484  205,
4485  206,
4486  207,
4487  208,
4488  209,
4489  210,
4490  211,
4491  212,
4492  213,
4493  214,
4494  215,
4495  216,
4496  217,
4497  218,
4498  251,
4499  252,
4500  253,
4501  301,
4502  302,
4503  303,
4504  304,
4505  305,
4506  310,
4507  311,
4508  316,
4509  317,
4510  318,
4511  319,
4512  320,
4513  321,
4514  322,
4515  323,
4516  324,
4517  325,
4518  327,
4519  328,
4520  329,
4521  330,
4522  332,
4523  333,
4524  334,
4525  335,
4526  336,
4527  337,
4528  338,
4529  341,
4530  342,
4531  344,
4532  345,
4533  350,
4534  351,
4535  352,
4536  353,
4537  354,
4538  355,
4539  356,
4540  357,
4541  358,
4542  359,
4543  360,
4544  361,
4545  362,
4546  363,
4547  364,
4548  365,
4549  366,
4550  367,
4551  368,
4552  369,
4553  370,
4554  371,
4555  372,
4556  373,
4557  374,
4558  375,
4559  376,
4560  377,
4561  378,
4562  379,
4563  380,
4564  381,
4565  382,
4566  383,
4567  384,
4568  385,
4569  386,
4570  387,
4571  388,
4572  389,
4573  390,
4574  391,
4575  401,
4576  402,
4577  403,
4578  404,
4579  405,
4580  406,
4581  407,
4582  408,
4583  409,
4584  411,
4585  412,
4586  413,
4587  414,
4588  415,
4589  416,
4590  417,
4591  444,
4592  451,
4593  452,
4594  454,
4595  455,
4596  456,
4597  457,
4598  458,
4599  459,
4600  460,
4601  500,
4602  501,
4603  502,
4604  504,
4605  505,
4606  506,
4607  515,
4608  516,
4609  517,
4610  522,
4611  523,
4612  526,
4613  527,
4614  528,
4615  533,
4616  534,
4617  535,
4618  536,
4619  537,
4620  538,
4621  539,
4622  540,
4623  541,
4624  542,
4625  543,
4626  544,
4627  545,
4628  546,
4629  547,
4630  548,
4631  549,
4632  550,
4633  551,
4634  552,
4635  553,
4636  554,
4637  555,
4638  556,
4639  557,
4640  558,
4641  559,
4642  560,
4643  561,
4644  562,
4645  563,
4646  564,
4647  565,
4648  566,
4649  567,
4650  568,
4651  569,
4652  570,
4653  571,
4654  572,
4655  600,
4656  601,
4657  602,
4658  603,
4659  604,
4660  605,
4661  606,
4662  607,
4663  608,
4664  609,
4665  610,
4666  611,
4667  612,
4668  613,
4669  614,
4670  615,
4671  616,
4672  617,
4673  618,
4674  619,
4675  620,
4676  621,
4677  622,
4678  623,
4679  624,
4680  625,
4681  626,
4682  627,
4683  628,
4684  629,
4685  630,
4686  631,
4687  632,
4688  633,
4689  634,
4690  635,
4691  636,
4692  637,
4693  638,
4694  639,
4695  640,
4696  641,
4697  642,
4698  643,
4699  644,
4700  645,
4701  646,
4702  647,
4703  648,
4704  649,
4705  650,
4706  651,
4707  652,
4708  653,
4709  654,
4710  655,
4711  656,
4712  657,
4713  658,
4714  659,
4715  660,
4716  661,
4717  662,
4718  663,
4719  664,
4720  665,
4721  666,
4722  667,
4723  668,
4724  669,
4725  670,
4726  671,
4727  672,
4728  673,
4729  674,
4730  675,
4731  676,
4732  677,
4733  678,
4734  679,
4735  680,
4736  681,
4737  682,
4738  683,
4739  684,
4740  685,
4741  686,
4742  687,
4743  688,
4744  689,
4745  690,
4746  691,
4747  692,
4748  693,
4749  694,
4750  695,
4751  696,
4752  697,
4753  698,
4754  699,
4755  700,
4756  701,
4757  702,
4758  703,
4759  704,
4760  705,
4761  706,
4762  707,
4763  708,
4764  709,
4765  710,
4766  711,
4767  712,
4768  713,
4769  714,
4770  715,
4771  716,
4772  717,
4773  718,
4774  719,
4775  720,
4776  721,
4777  722,
4778  723,
4779  724,
4780  725,
4781  726,
4782  727,
4783  728,
4784  729,
4785  730,
4786  731,
4787  732,
4788  733,
4789  734,
4790  735,
4791  736,
4792  737,
4793  738,
4794  739,
4795  740,
4796  741,
4797  742,
4798  743,
4799  744,
4800  745,
4801  746,
4802  747,
4803  748,
4804  749,
4805  750,
4806  751,
4807  752,
4808  753,
4809  754,
4810  755,
4811  756,
4812  757,
4813  758,
4814  759,
4815  760,
4816  761,
4817  762,
4818  763,
4819  764,
4820  765,
4821  766,
4822  767,
4823  768,
4824  769,
4825  770,
4826  771,
4827  772,
4828  773,
4829  774,
4830  775,
4831  776,
4832  777,
4833  778,
4834  779,
4835  780,
4836  781,
4837  782,
4838  783,
4839  784,
4840  785,
4841  786,
4842  787,
4843  788,
4844  789,
4845  790,
4846  791,
4847  792,
4848  793,
4849  794,
4850  795,
4851  796,
4852  797,
4853  798,
4854  799,
4855  800,
4856  801,
4857  802,
4858  803,
4859  804,
4860  805,
4861  806,
4862  807,
4863  808,
4864  809,
4865  810,
4866  811,
4867  812,
4868  813,
4869  814,
4870  815,
4871  816,
4872  817,
4873  818,
4874  819,
4875  820,
4876  821,
4877  822,
4878  823,
4879  824,
4880  825,
4881  826,
4882  827,
4883  828,
4884  829,
4885  830,
4886  831,
4887  832,
4888  833,
4889  834,
4890  835,
4891  836,
4892  837,
4893  838,
4894  839,
4895  840,
4896  841,
4897  842,
4898  843,
4899  844,
4900  845,
4901  846,
4902  847,
4903  848,
4904  849,
4905  851,
4906  0,
4907  0,
4908  0,
4909  0,
4910  0,
4911  0,
4912  0,
4913  0,
4914  0,
4915  0,
4916  0,
4917  0,
4918  0,
4919  0,
4920  0,
4921  0,
4922  0,
4923  0,
4924  0,
4925  0,
4926  0,
4927  0,
4928  0,
4929  0
4930  };
4931  std::string _labels[NUM_RX_NAMES] = {
4932  "(z,total)",
4933  "(z,scattering)",
4934  "(z,elastic)",
4935  "(z,nonelastic)",
4936  "(z,n)",
4937  "(misc)",
4938  "(z,continuum)",
4939  "(z,2nd)",
4940  "(z,2n)",
4941  "(z,2n0)",
4942  "(z,2n1)",
4943  "(z,2n2)",
4944  "(z,3n)",
4945  "(z,3n0)",
4946  "(z,3n1)",
4947  "(z,3n2)",
4948  "(z,fission)",
4949  "(z,f)",
4950  "(z,nf)",
4951  "(z,2nf)",
4952  "(z,n+a)",
4953  "(z,n+a0)",
4954  "(z,n+a1)",
4955  "(z,n+a2)",
4956  "(z,n+3a)",
4957  "(z,2n+a)",
4958  "(z,3n+a)",
4959  "(z,abs) Absorption",
4960  "(z,n+p)",
4961  "(z,n+p0)",
4962  "(z,n+p1)",
4963  "(z,n+p2)",
4964  "(z,n+p+d)",
4965  "(z,n+2a)",
4966  "(z,2n+2a)",
4967  "(z,nd)",
4968  "(z,nd0)",
4969  "(z,nd1)",
4970  "(z,nd2)",
4971  "(z,nt)",
4972  "(z,nt0)",
4973  "(z,nt1)",
4974  "(z,nt2)",
4975  "(z,n+He3)",
4976  "(z,n+He3-0)",
4977  "(z,n+He3-1)",
4978  "(z,n+He3-2)",
4979  "(z,n+d+3a)",
4980  "(z,n+t+2a)",
4981  "(z,4n)",
4982  "(z,4n0)",
4983  "(z,4n1)",
4984  "(z,3nf)",
4985  "(z,2n+p)",
4986  "(z,3n+p)",
4987  "(z,n+2p)",
4988  "(z,npa)",
4989  "(z,n0)",
4990  "(z,n1)",
4991  "(z,n2)",
4992  "(z,n3)",
4993  "(z,n4)",
4994  "(z,n5)",
4995  "(z,n6)",
4996  "(z,n7)",
4997  "(z,n8)",
4998  "(z,n9)",
4999  "(z,n10)",
5000  "(z,n11)",
5001  "(z,n12)",
5002  "(z,n13)",
5003  "(z,n14)",
5004  "(z,n15)",
5005  "(z,n16)",
5006  "(z,n17)",
5007  "(z,n18)",
5008  "(z,n19)",
5009  "(z,n20)",
5010  "(z,n21)",
5011  "(z,n22)",
5012  "(z,n23)",
5013  "(z,n24)",
5014  "(z,n25)",
5015  "(z,n26)",
5016  "(z,n27)",
5017  "(z,n28)",
5018  "(z,n29)",
5019  "(z,n30)",
5020  "(z,n31)",
5021  "(z,n32)",
5022  "(z,n33)",
5023  "(z,n34)",
5024  "(z,n35)",
5025  "(z,n36)",
5026  "(z,n37)",
5027  "(z,n38)",
5028  "(z,n39)",
5029  "(z,n40)",
5030  "(z,nc)",
5031  "(z,disap) Neutron disappearance",
5032  "(z,gamma)",
5033  "(z,gamma0)",
5034  "(z,gamma1)",
5035  "(z,gamma2)",
5036  "(z,p)",
5037  "(z,d)",
5038  "(z,t)",
5039  "(z,3He)",
5040  "(z,a)",
5041  "(z,2a)",
5042  "(z,3a)",
5043  "(z,2p)",
5044  "(z,2p0)",
5045  "(z,2p1)",
5046  "(z,2p2)",
5047  "(z,pa)",
5048  "(z,t2a)",
5049  "(z,d2a)",
5050  "(z,pd)",
5051  "(z,pt)",
5052  "(z,da)",
5053  "Resonance Parameters",
5054  "(z,Xn)",
5055  "(z,Xgamma)",
5056  "(z,Xp)",
5057  "(z,Xd)",
5058  "(z,Xt)",
5059  "(z,X3He)",
5060  "(z,Xa)",
5061  "(z,Xpi+) Total pi+ meson production",
5062  "(z,Xpi0) Total pi0 meson production",
5063  "(z,Xpi-) Total pi- meson production",
5064  "(z,Xmu+) Total anti-muon production",
5065  "(z,Xmu-) Total muon production",
5066  "(z,Xk+) Total positive kaon production",
5067  "(z,Xk0long) Total long-lived neutral kaon production",
5068  "(z,Xk0short) Total short-lived neutral kaon production",
5069  "(z,Xk-) Total negative kaon production",
5070  "(z,Xp-) Total anti-proton production",
5071  "(z,Xn-) Total anti-neutron production",
5072  "Average cosine of scattering angle",
5073  "Average logarithmic energy decrement",
5074  "Average xi^2/(2*xi)",
5075  "Energy Release from (z,total)",
5076  "Energy Release from (z,elastic)",
5077  "Energy Release from (z,nonelastic)",
5078  "Energy Release from (z,inelastic)",
5079  "Energy Release from (misc)",
5080  "Energy Release from (z,continuum)",
5081  "Energy Release from (z,2nd)",
5082  "Energy Release from (z,2n)",
5083  "Energy Release from (z,3n)",
5084  "Energy Release from (z,fission)",
5085  "Energy Release from (z,f)",
5086  "Energy Release from (z,nf)",
5087  "Energy Release from (z,2nf)",
5088  "Energy Release from (z,n+a)",
5089  "Energy Release from (z,n+3a)",
5090  "Energy Release from (z,2n+a)",
5091  "Energy Release from (z,3n+a)",
5092  "Energy Release from (z,abs) Absorption",
5093  "Energy Release from (z,n+p)",
5094  "Energy Release from (z,n+2a)",
5095  "Energy Release from (z,2n+2a)",
5096  "Energy Release from (z,nd)",
5097  "Energy Release from (z,nt)",
5098  "Energy Release from (z,n+He3)",
5099  "Energy Release from (z,n+d+3a)",
5100  "Energy Release from (z,n+t+2a)",
5101  "Energy Release from (z,4n)",
5102  "Energy Release from (z,3nf)",
5103  "Energy Release from (z,2n+p)",
5104  "Energy Release from (z,3n+p)",
5105  "Energy Release from (z,n+2p)",
5106  "Energy Release from (z,npa)",
5107  "Energy Release from (z,n0)",
5108  "Energy Release from (z,n1)",
5109  "Energy Release from (z,n2)",
5110  "Energy Release from (z,n3)",
5111  "Energy Release from (z,n4)",
5112  "Energy Release from (z,n5)",
5113  "Energy Release from (z,n6)",
5114  "Energy Release from (z,n7)",
5115  "Energy Release from (z,n8)",
5116  "Energy Release from (z,n9)",
5117  "Energy Release from (z,n10)",
5118  "Energy Release from (z,n11)",
5119  "Energy Release from (z,n12)",
5120  "Energy Release from (z,n13)",
5121  "Energy Release from (z,n14)",
5122  "Energy Release from (z,n15)",
5123  "Energy Release from (z,n16)",
5124  "Energy Release from (z,n17)",
5125  "Energy Release from (z,n18)",
5126  "Energy Release from (z,n19)",
5127  "Energy Release from (z,n20)",
5128  "Energy Release from (z,n21)",
5129  "Energy Release from (z,n22)",
5130  "Energy Release from (z,n23)",
5131  "Energy Release from (z,n24)",
5132  "Energy Release from (z,n25)",
5133  "Energy Release from (z,n26)",
5134  "Energy Release from (z,n27)",
5135  "Energy Release from (z,n28)",
5136  "Energy Release from (z,n29)",
5137  "Energy Release from (z,n30)",
5138  "Energy Release from (z,n31)",
5139  "Energy Release from (z,n32)",
5140  "Energy Release from (z,n33)",
5141  "Energy Release from (z,n34)",
5142  "Energy Release from (z,n35)",
5143  "Energy Release from (z,n36)",
5144  "Energy Release from (z,n37)",
5145  "Energy Release from (z,n38)",
5146  "Energy Release from (z,n39)",
5147  "Energy Release from (z,n40)",
5148  "Energy Release from (z,nc)",
5149  "Energy Release from (z,disap) Neutron disappearance",
5150  "Energy Release from (z,gamma)",
5151  "Energy Release from (z,p)",
5152  "Energy Release from (z,d)",
5153  "Energy Release from (z,t)",
5154  "Energy Release from (z,3He)",
5155  "Energy Release from (z,a)",
5156  "Energy Release from (z,2a)",
5157  "Energy Release from (z,3a)",
5158  "Energy Release from (z,2p)",
5159  "Energy Release from (z,pa)",
5160  "Energy Release from (z,t2a)",
5161  "Energy Release from (z,d2a)",
5162  "Energy Release from (z,pd)",
5163  "Energy Release from (z,pt)",
5164  "Energy Release from (z,da)",
5165  "(damage)",
5166  "Descriptive Data",
5167  "Total Neutrons per Fission",
5168  "Independent fission product yield",
5169  "Delayed Neutron Data",
5170  "Prompt Neutrons per Fission",
5171  "Radioactive Decay Data",
5172  "Energy Release Due to Fission",
5173  "Cumulative Fission Product Yield",
5174  "Delayed Photon Data",
5175  "Total charged-particle stopping power",
5176  "Total photon interaction",
5177  "Photon coherent scattering",
5178  "Photon incoherent scattering",
5179  "Imaginary scattering factor",
5180  "Real scattering factor",
5181  "Pair production, electron field",
5182  "Total pair production",
5183  "Pair production, nuclear field",
5184  "Photoelectric absorption",
5185  "Photo-excitation cross section",
5186  "Electro-atomic scattering",
5187  "Electro-atomic bremsstrahlung",
5188  "Electro-atomic excitation cross section",
5189  "Atomic relaxation data",
5190  "K (1s1/2) subshell",
5191  "L1 (2s1/2) subshell",
5192  "L2 (2p1/2) subshell",
5193  "L3 (2p3/2) subshell",
5194  "M1 (3s1/2) subshell",
5195  "M2 (3p1/2) subshell",
5196  "M3 (3p3/2) subshell",
5197  "M4 (3d1/2) subshell",
5198  "M5 (3d1/2) subshell",
5199  "N1 (4s1/2) subshell",
5200  "N2 (4p1/2) subshell",
5201  "N3 (4p3/2) subshell",
5202  "N4 (4d3/2) subshell",
5203  "N5 (4d5/2) subshell",
5204  "N6 (4f5/2) subshell",
5205  "N7 (4f7/2) subshell",
5206  "O1 (5s1/2) subshell",
5207  "O2 (5p1/2) subshell",
5208  "O3 (5p3/2) subshell",
5209  "O4 (5d3/2) subshell",
5210  "O5 (5d5/2) subshell",
5211  "O6 (5f5/2) subshell",
5212  "O7 (5f7/2) subshell",
5213  "O8 (5g7/2) subshell",
5214  "O9 (5g9/2) subshell",
5215  "P1 (6s1/2) subshell",
5216  "P2 (6p1/2) subshell",
5217  "P3 (6p3/2) subshell",
5218  "P4 (6d3/2) subshell",
5219  "P5 (6d5/2) subshell",
5220  "P6 (6f5/2) subshell",
5221  "P7 (6f7/2) subshell",
5222  "P8 (6g7/2) subshell",
5223  "P9 (6g9/2) subshell",
5224  "P10 (6h9/2) subshell",
5225  "P11 (6h11/2) subshell",
5226  "Q1 (7s1/2) subshell",
5227  "Q2 (7p1/2) subshell",
5228  "Q3 (7p3/2) subshell",
5229  "(z,p0)",
5230  "(z,p1)",
5231  "(z,p2)",
5232  "(z,p3)",
5233  "(z,p4)",
5234  "(z,p5)",
5235  "(z,p6)",
5236  "(z,p7)",
5237  "(z,p8)",
5238  "(z,p9)",
5239  "(z,p10)",
5240  "(z,p11)",
5241  "(z,p12)",
5242  "(z,p13)",
5243  "(z,p14)",
5244  "(z,p15)",
5245  "(z,p16)",
5246  "(z,p17)",
5247  "(z,p18)",
5248  "(z,p19)",
5249  "(z,p20)",
5250  "(z,p21)",
5251  "(z,p22)",
5252  "(z,p23)",
5253  "(z,p24)",
5254  "(z,p25)",
5255  "(z,p26)",
5256  "(z,p27)",
5257  "(z,p28)",
5258  "(z,p29)",
5259  "(z,p30)",
5260  "(z,p31)",
5261  "(z,p32)",
5262  "(z,p33)",
5263  "(z,p34)",
5264  "(z,p35)",
5265  "(z,p36)",
5266  "(z,p37)",
5267  "(z,p38)",
5268  "(z,p39)",
5269  "(z,p40)",
5270  "(z,p41)",
5271  "(z,p42)",
5272  "(z,p43)",
5273  "(z,p44)",
5274  "(z,p45)",
5275  "(z,p46)",
5276  "(z,p47)",
5277  "(z,p48)",
5278  "(z,pc)",
5279  "(z,d0)",
5280  "(z,d1)",
5281  "(z,d2)",
5282  "(z,d3)",
5283  "(z,d4)",
5284  "(z,d5)",
5285  "(z,d6)",
5286  "(z,d7)",
5287  "(z,d8)",
5288  "(z,d9)",
5289  "(z,d10)",
5290  "(z,d11)",
5291  "(z,d12)",
5292  "(z,d13)",
5293  "(z,d14)",
5294  "(z,d15)",
5295  "(z,d16)",
5296  "(z,d17)",
5297  "(z,d18)",
5298  "(z,d19)",
5299  "(z,d20)",
5300  "(z,d21)",
5301  "(z,d22)",
5302  "(z,d23)",
5303  "(z,d24)",
5304  "(z,d25)",
5305  "(z,d26)",
5306  "(z,d27)",
5307  "(z,d28)",
5308  "(z,d29)",
5309  "(z,d30)",
5310  "(z,d31)",
5311  "(z,d32)",
5312  "(z,d33)",
5313  "(z,d34)",
5314  "(z,d35)",
5315  "(z,d36)",
5316  "(z,d37)",
5317  "(z,d38)",
5318  "(z,d39)",
5319  "(z,d40)",
5320  "(z,d41)",
5321  "(z,d42)",
5322  "(z,d43)",
5323  "(z,d44)",
5324  "(z,d45)",
5325  "(z,d46)",
5326  "(z,d47)",
5327  "(z,d48)",
5328  "(z,dc)",
5329  "(z,t0)",
5330  "(z,t1)",
5331  "(z,t2)",
5332  "(z,t3)",
5333  "(z,t4)",
5334  "(z,t5)",
5335  "(z,t6)",
5336  "(z,t7)",
5337  "(z,t8)",
5338  "(z,t9)",
5339  "(z,t10)",
5340  "(z,t11)",
5341  "(z,t12)",
5342  "(z,t13)",
5343  "(z,t14)",
5344  "(z,t15)",
5345  "(z,t16)",
5346  "(z,t17)",
5347  "(z,t18)",
5348  "(z,t19)",
5349  "(z,t20)",
5350  "(z,t21)",
5351  "(z,t22)",
5352  "(z,t23)",
5353  "(z,t24)",
5354  "(z,t25)",
5355  "(z,t26)",
5356  "(z,t27)",
5357  "(z,t28)",
5358  "(z,t29)",
5359  "(z,t30)",
5360  "(z,t31)",
5361  "(z,t32)",
5362  "(z,t33)",
5363  "(z,t34)",
5364  "(z,t35)",
5365  "(z,t36)",
5366  "(z,t37)",
5367  "(z,t38)",
5368  "(z,t39)",
5369  "(z,t40)",
5370  "(z,t41)",
5371  "(z,t42)",
5372  "(z,t43)",
5373  "(z,t44)",
5374  "(z,t45)",
5375  "(z,t46)",
5376  "(z,t47)",
5377  "(z,t48)",
5378  "(z,tc)",
5379  "(z,3He0)",
5380  "(z,3He1)",
5381  "(z,3He2)",
5382  "(z,3He3)",
5383  "(z,3He4)",
5384  "(z,3He5)",
5385  "(z,3He6)",
5386  "(z,3He7)",
5387  "(z,3He8)",
5388  "(z,3He9)",
5389  "(z,3He10)",
5390  "(z,3He11)",
5391  "(z,3He12)",
5392  "(z,3He13)",
5393  "(z,3He14)",
5394  "(z,3He15)",
5395  "(z,3He16)",
5396  "(z,3He17)",
5397  "(z,3He18)",
5398  "(z,3He19)",
5399  "(z,3He20)",
5400  "(z,3He21)",
5401  "(z,3He22)",
5402  "(z,3He23)",
5403  "(z,3He24)",
5404  "(z,3He25)",
5405  "(z,3He26)",
5406  "(z,3He27)",
5407  "(z,3He28)",
5408  "(z,3He29)",
5409  "(z,3He30)",
5410  "(z,3He31)",
5411  "(z,3He32)",
5412  "(z,3He33)",
5413  "(z,3He34)",
5414  "(z,3He35)",
5415  "(z,3He36)",
5416  "(z,3He37)",
5417  "(z,3He38)",
5418  "(z,3He39)",
5419  "(z,3He40)",
5420  "(z,3He41)",
5421  "(z,3He42)",
5422  "(z,3He43)",
5423  "(z,3He44)",
5424  "(z,3He45)",
5425  "(z,3He46)",
5426  "(z,3He47)",
5427  "(z,3He48)",
5428  "(z,3Hec)",
5429  "(z,a0)",
5430  "(z,a1)",
5431  "(z,a2)",
5432  "(z,a3)",
5433  "(z,a4)",
5434  "(z,a5)",
5435  "(z,a6)",
5436  "(z,a7)",
5437  "(z,a8)",
5438  "(z,a9)",
5439  "(z,a10)",
5440  "(z,a11)",
5441  "(z,a12)",
5442  "(z,a13)",
5443  "(z,a14)",
5444  "(z,a15)",
5445  "(z,a16)",
5446  "(z,a17)",
5447  "(z,a18)",
5448  "(z,a19)",
5449  "(z,a20)",
5450  "(z,a21)",
5451  "(z,a22)",
5452  "(z,a23)",
5453  "(z,a24)",
5454  "(z,a25)",
5455  "(z,a26)",
5456  "(z,a27)",
5457  "(z,a28)",
5458  "(z,a29)",
5459  "(z,a30)",
5460  "(z,a31)",
5461  "(z,a32)",
5462  "(z,a33)",
5463  "(z,a34)",
5464  "(z,a35)",
5465  "(z,a36)",
5466  "(z,a37)",
5467  "(z,a38)",
5468  "(z,a39)",
5469  "(z,a40)",
5470  "(z,a41)",
5471  "(z,a42)",
5472  "(z,a43)",
5473  "(z,a44)",
5474  "(z,a45)",
5475  "(z,a46)",
5476  "(z,a47)",
5477  "(z,a48)",
5478  "(z,ac)",
5479  "Lumped Covariances",
5480  "Any Excited State",
5481  "(z,b-)",
5482  "(z,b+)",
5483  "(z,ec)",
5484  "(z,b-n)",
5485  "(z,b-a)",
5486  "(z,it)",
5487  "(z,b+a)",
5488  "(z,ec+b+)",
5489  "(z,b+p)",
5490  "(z,b-2n)",
5491  "(z,b-3n)",
5492  "(z,b-4n)",
5493  "(z,ecp)",
5494  "(z,eca)",
5495  "(z,b+2p)",
5496  "(z,ec2p)",
5497  "(z,2b-)",
5498  "(z,b-p)",
5499  "(z,14c)",
5500  "(z,b+3p)",
5501  "(z,sf)",
5502  "(z,2b+)",
5503  "(z,2ec)"
5504  };
5505  std::string _docs[NUM_RX_NAMES] = {
5506  "(n,total) Neutron total",
5507  "Total scattering",
5508  "(z,z0) Elastic scattering",
5509  "(z,nonelas) Nonelastic neutron",
5510  "(z,n) One neutron in exit channel",
5511  "(z,anything) Miscellaneous",
5512  "(z,contin) Total continuum reaction",
5513  "(z,2nd) Production of 2n and d",
5514  "(z,2n) Production of 2n",
5515  "(z,2n0) Production of 2n, ground state",
5516  "(z,2n1) Production of 2n, 1st excited state",
5517  "(z,2n2) Production of 2n, 2nd excited state",
5518  "(z,3n) Production of 3n",
5519  "(z,3n0) Production of 3n, ground state",
5520  "(z,3n1) Production of 3n, 1st excited state",
5521  "(z,3n2) Production of 3n, 2nd excited state",
5522  "(z,fiss) Particle-induced fission",
5523  "(z,f) First-chance fission",
5524  "(z,nf) Second chance fission",
5525  "(z,2nf) Third-chance fission",
5526  "(z,na) Production of n and alpha",
5527  "(z,na0) Production of n and alpha, ground state",
5528  "(z,na1) Production of n and alpha, 1st excited state",
5529  "(z,na2) Production of n and alpha, 2nd excited state",
5530  "(z,n3a) Production of n and 3 alphas",
5531  "(z,2na) Production of 2n and alpha",
5532  "(z,3na) Production of 3n and alpha",
5533  "(n,abs) Absorption",
5534  "(z,np) Production of n and p",
5535  "(z,np0) Production of n and p, ground state",
5536  "(z,np1) Production of n and p, 1st excited state",
5537  "(z,np2) Production of n and p, 2nd excited state",
5538  "(z,npd) Production of n, p, and d",
5539  "(z,n2a) Production of n and 2 alphas",
5540  "(z,2n2a) Production of 2n and 2 alphas",
5541  "(z,nd) Production of n and d",
5542  "(z,nd0) Production of n and d, ground state",
5543  "(z,nd1) Production of n and d, 1st excited state",
5544  "(z,nd2) Production of n and d, 2nd excited state",
5545  "(z,nt) Production of n and t",
5546  "(z,nt0) Production of n and t, ground state",
5547  "(z,nt1) Production of n and t, 1st excited state",
5548  "(z,nt2) Production of n and t, 2nd excited state",
5549  "(z,n3He) Production of n and He-3",
5550  "(z,n3He-0) Production of n and He-3, ground state",
5551  "(z,n3He-1) Production of n and He-3, 1st excited state",
5552  "(z,n3He-2) Production of n and He-3, 2nd excited state",
5553  "(z,nd2a) Production of n, d, and alpha",
5554  "(z,nt2a) Production of n, t, and 2 alphas",
5555  "(z,4n) Production of 4n",
5556  "(z,4n0) Production of 4n, ground state",
5557  "(z,4n1) Production of 4n, 1st excited state",
5558  "(z,3nf) Fourth-chance fission",
5559  "(z,2np) Production of 2n and p",
5560  "(z,3np) Production of 3n and p",
5561  "(z,n2p) Production of n and 2p",
5562  "(z,npa) Production of n, p, and alpha",
5563  "(z,n0) Production of n, ground state",
5564  "(z,n1) Production of n, 1st excited state",
5565  "(z,n2) Production of n, 2nd excited state",
5566  "(z,n3) Production of n, 3rd excited state",
5567  "(z,n4) Production of n, 4th excited state",
5568  "(z,n5) Production of n, 5th excited state",
5569  "(z,n6) Production of n, 6th excited state",
5570  "(z,n7) Production of n, 7th excited state",
5571  "(z,n8) Production of n, 8th excited state",
5572  "(z,n9) Production of n, 9th excited state",
5573  "(z,n10) Production of n, 10th excited state",
5574  "(z,n11) Production of n, 11th excited state",
5575  "(z,n12) Production of n, 12th excited state",
5576  "(z,n13) Production of n, 13th excited state",
5577  "(z,n14) Production of n, 14th excited state",
5578  "(z,n15) Production of n, 15th excited state",
5579  "(z,n16) Production of n, 16th excited state",
5580  "(z,n17) Production of n, 17th excited state",
5581  "(z,n18) Production of n, 18th excited state",
5582  "(z,n19) Production of n, 19th excited state",
5583  "(z,n20) Production of n, 20th excited state",
5584  "(z,n21) Production of n, 21st excited state",
5585  "(z,n22) Production of n, 22nd excited state",
5586  "(z,n23) Production of n, 23rd excited state",
5587  "(z,n24) Production of n, 24th excited state",
5588  "(z,n25) Production of n, 25th excited state",
5589  "(z,n26) Production of n, 26th excited state",
5590  "(z,n27) Production of n, 27th excited state",
5591  "(z,n28) Production of n, 28th excited state",
5592  "(z,n29) Production of n, 29th excited state",
5593  "(z,n30) Production of n, 30th excited state",
5594  "(z,n31) Production of n, 31st excited state",
5595  "(z,n32) Production of n, 32nd excited state",
5596  "(z,n33) Production of n, 33rd excited state",
5597  "(z,n34) Production of n, 34th excited state",
5598  "(z,n35) Production of n, 35th excited state",
5599  "(z,n36) Production of n, 36th excited state",
5600  "(z,n37) Production of n, 37th excited state",
5601  "(z,n38) Production of n, 38th excited state",
5602  "(z,n39) Production of n, 39th excited state",
5603  "(z,n40) Production of n, 40th excited state",
5604  "(z,nc) Production of n in continuum",
5605  "(n,disap) Neutron disappearance",
5606  "(z,gamma) Radiative capture",
5607  "(z,gamma0) Radiative capture, ground state",
5608  "(z,gamma1) Radiative capture, 1st excited state",
5609  "(z,gamma2) Radiative capture, 2st excited state",
5610  "(z,p) Production of p",
5611  "(z,d) Production of d",
5612  "(z,t) Production of t",
5613  "(z,3He) Production of He-3",
5614  "(z,a) Production of alpha",
5615  "(z,2a) Production of 2 alphas",
5616  "(z,3a) Production of 3 alphas",
5617  "(z,2p) Production of 2p",
5618  "(z,2p0) Production of 2p, ground state",
5619  "(z,2p1) Production of 2p, 1st excited state",
5620  "(z,2p2) Production of 2p, 2nd excited state",
5621  "(z,pa) Production of p and alpha",
5622  "(z,t2a) Production of t and 2 alphas",
5623  "(z,d2a) Production of d and 2 alphas",
5624  "(z,pd) Production of p and d",
5625  "(z,pt) Production of p and t",
5626  "(z,da) Production of d and a",
5627  "Resonance Parameters",
5628  "(z,Xn) Total neutron production",
5629  "(z,Xgamma) Total gamma production",
5630  "(z,Xp) Total proton production",
5631  "(z,Xd) Total deuteron production",
5632  "(z,Xt) Total triton production",
5633  "(z,X3He) Total He-3 production",
5634  "(z,Xa) Total alpha production",
5635  "(z,Xpi+) Total pi+ meson production",
5636  "(z,Xpi0) Total pi0 meson production",
5637  "(z,Xpi-) Total pi- meson production",
5638  "(z,Xmu+) Total anti-muon production",
5639  "(z,Xmu-) Total muon production",
5640  "(z,Xk+) Total positive kaon production",
5641  "(z,Xk0long) Total long-lived neutral kaon production",
5642  "(z,Xk0short) Total short-lived neutral kaon production",
5643  "(z,Xk-) Total negative kaon production",
5644  "(z,Xp-) Total anti-proton production",
5645  "(z,Xn-) Total anti-neutron production",
5646  "Average cosine of scattering angle",
5647  "Average logarithmic energy decrement",
5648  "Average xi^2/(2*xi)",
5649  "Energy Release from (n,total) Neutron total",
5650  "Energy Release from (z,z0) Elastic scattering",
5651  "Energy Release from (z,nonelas) Nonelastic neutron",
5652  "Energy Release from (z,n) One neutron in exit channel",
5653  "Energy Release from (z,anything) Miscellaneous",
5654  "Energy Release from (z,contin) Total continuum reaction",
5655  "Energy Release from (z,2nd) Production of 2n and d",
5656  "Energy Release from (z,2n) Production of 2n",
5657  "Energy Release from (z,3n) Production of 3n",
5658  "Energy Release from (z,fiss) Particle-induced fission",
5659  "Energy Release from (z,f) First-chance fission",
5660  "Energy Release from (z,nf) Second chance fission",
5661  "Energy Release from (z,2nf) Third-chance fission",
5662  "Energy Release from (z,na) Production of n and alpha",
5663  "Energy Release from (z,n3a) Production of n and 3 alphas",
5664  "Energy Release from (z,2na) Production of 2n and alpha",
5665  "Energy Release from (z,3na) Production of 3n and alpha",
5666  "Energy Release from (n,abs) Absorption",
5667  "Energy Release from (z,np) Production of n and p",
5668  "Energy Release from (z,n2a) Production of n and 2 alphas",
5669  "Energy Release from (z,2n2a) Production of 2n and 2 alphas",
5670  "Energy Release from (z,nd) Production of n and d",
5671  "Energy Release from (z,nt) Production of n and t",
5672  "Energy Release from (z,n3He) Production of n and He-3",
5673  "Energy Release from (z,nd2a) Production of n, d, and alpha",
5674  "Energy Release from (z,nt2a) Production of n, t, and 2 alphas",
5675  "Energy Release from (z,4n) Production of 4n",
5676  "Energy Release from (z,3nf) Fourth-chance fission",
5677  "Energy Release from (z,2np) Production of 2n and p",
5678  "Energy Release from (z,3np) Production of 3n and p",
5679  "Energy Release from (z,n2p) Production of n and 2p",
5680  "Energy Release from (z,npa) Production of n, p, and alpha",
5681  "Energy Release from (z,n0) Production of n, ground state",
5682  "Energy Release from (z,n1) Production of n, 1st excited state",
5683  "Energy Release from (z,n2) Production of n, 2nd excited state",
5684  "Energy Release from (z,n3) Production of n, 3rd excited state",
5685  "Energy Release from (z,n4) Production of n, 4th excited state",
5686  "Energy Release from (z,n5) Production of n, 5th excited state",
5687  "Energy Release from (z,n6) Production of n, 6th excited state",
5688  "Energy Release from (z,n7) Production of n, 7th excited state",
5689  "Energy Release from (z,n8) Production of n, 8th excited state",
5690  "Energy Release from (z,n9) Production of n, 9th excited state",
5691  "Energy Release from (z,n10) Production of n, 10th excited state",
5692  "Energy Release from (z,n11) Production of n, 11th excited state",
5693  "Energy Release from (z,n12) Production of n, 12th excited state",
5694  "Energy Release from (z,n13) Production of n, 13th excited state",
5695  "Energy Release from (z,n14) Production of n, 14th excited state",
5696  "Energy Release from (z,n15) Production of n, 15th excited state",
5697  "Energy Release from (z,n16) Production of n, 16th excited state",
5698  "Energy Release from (z,n17) Production of n, 17th excited state",
5699  "Energy Release from (z,n18) Production of n, 18th excited state",
5700  "Energy Release from (z,n19) Production of n, 19th excited state",
5701  "Energy Release from (z,n20) Production of n, 20th excited state",
5702  "Energy Release from (z,n21) Production of n, 21st excited state",
5703  "Energy Release from (z,n22) Production of n, 22nd excited state",
5704  "Energy Release from (z,n23) Production of n, 23rd excited state",
5705  "Energy Release from (z,n24) Production of n, 24th excited state",
5706  "Energy Release from (z,n25) Production of n, 25th excited state",
5707  "Energy Release from (z,n26) Production of n, 26th excited state",
5708  "Energy Release from (z,n27) Production of n, 27th excited state",
5709  "Energy Release from (z,n28) Production of n, 28th excited state",
5710  "Energy Release from (z,n29) Production of n, 29th excited state",
5711  "Energy Release from (z,n30) Production of n, 30th excited state",
5712  "Energy Release from (z,n31) Production of n, 31st excited state",
5713  "Energy Release from (z,n32) Production of n, 32nd excited state",
5714  "Energy Release from (z,n33) Production of n, 33rd excited state",
5715  "Energy Release from (z,n34) Production of n, 34th excited state",
5716  "Energy Release from (z,n35) Production of n, 35th excited state",
5717  "Energy Release from (z,n36) Production of n, 36th excited state",
5718  "Energy Release from (z,n37) Production of n, 37th excited state",
5719  "Energy Release from (z,n38) Production of n, 38th excited state",
5720  "Energy Release from (z,n39) Production of n, 39th excited state",
5721  "Energy Release from (z,n40) Production of n, 40th excited state",
5722  "Energy Release from (z,nc) Production of n in continuum",
5723  "Energy Release from (n,disap) Neutron disappearance",
5724  "Energy Release from (z,gamma) Radiative capture",
5725  "Energy Release from (z,p) Production of p",
5726  "Energy Release from (z,d) Production of d",
5727  "Energy Release from (z,t) Production of t",
5728  "Energy Release from (z,3He) Production of He-3",
5729  "Energy Release from (z,a) Production of alpha",
5730  "Energy Release from (z,2a) Production of 2 alphas",
5731  "Energy Release from (z,3a) Production of 3 alphas",
5732  "Energy Release from (z,2p) Production of 2p",
5733  "Energy Release from (z,pa) Production of p and alpha",
5734  "Energy Release from (z,t2a) Production of t and 2 alphas",
5735  "Energy Release from (z,d2a) Production of d and 2 alphas",
5736  "Energy Release from (z,pd) Production of p and d",
5737  "Energy Release from (z,pt) Production of p and t",
5738  "Energy Release from (z,da) Production of d and a",
5739  "(damage)",
5740  "Descriptive Data",
5741  "Total Neutrons per Fission",
5742  "Independent fission product yield",
5743  "Delayed Neutron Data",
5744  "Prompt Neutrons per Fission",
5745  "Radioactive Decay Data",
5746  "Energy Release Due to Fission",
5747  "Cumulative Fission Product Yield",
5748  "Delayed Photon Data",
5749  "Total charged-particle stopping power",
5750  "Total photon interaction",
5751  "Photon coherent scattering",
5752  "Photon incoherent scattering",
5753  "Imaginary scattering factor",
5754  "Real scattering factor",
5755  "Pair production, electron field",
5756  "Total pair production",
5757  "Pair production, nuclear field",
5758  "Photoelectric absorption",
5759  "Photo-excitation cross section",
5760  "Electro-atomic scattering",
5761  "Electro-atomic bremsstrahlung",
5762  "Electro-atomic excitation cross section",
5763  "Atomic relaxation data",
5764  "K (1s1/2) subshell",
5765  "L1 (2s1/2) subshell",
5766  "L2 (2p1/2) subshell",
5767  "L3 (2p3/2) subshell",
5768  "M1 (3s1/2) subshell",
5769  "M2 (3p1/2) subshell",
5770  "M3 (3p3/2) subshell",
5771  "M4 (3d1/2) subshell",
5772  "M5 (3d1/2) subshell",
5773  "N1 (4s1/2) subshell",
5774  "N2 (4p1/2) subshell",
5775  "N3 (4p3/2) subshell",
5776  "N4 (4d3/2) subshell",
5777  "N5 (4d5/2) subshell",
5778  "N6 (4f5/2) subshell",
5779  "N7 (4f7/2) subshell",
5780  "O1 (5s1/2) subshell",
5781  "O2 (5p1/2) subshell",
5782  "O3 (5p3/2) subshell",
5783  "O4 (5d3/2) subshell",
5784  "O5 (5d5/2) subshell",
5785  "O6 (5f5/2) subshell",
5786  "O7 (5f7/2) subshell",
5787  "O8 (5g7/2) subshell",
5788  "O9 (5g9/2) subshell",
5789  "P1 (6s1/2) subshell",
5790  "P2 (6p1/2) subshell",
5791  "P3 (6p3/2) subshell",
5792  "P4 (6d3/2) subshell",
5793  "P5 (6d5/2) subshell",
5794  "P6 (6f5/2) subshell",
5795  "P7 (6f7/2) subshell",
5796  "P8 (6g7/2) subshell",
5797  "P9 (6g9/2) subshell",
5798  "P10 (6h9/2) subshell",
5799  "P11 (6h11/2) subshell",
5800  "Q1 (7s1/2) subshell",
5801  "Q2 (7p1/2) subshell",
5802  "Q3 (7p3/2) subshell",
5803  "(n,p0)",
5804  "(n,p1)",
5805  "(n,p2)",
5806  "(n,p3)",
5807  "(n,p4)",
5808  "(n,p5)",
5809  "(n,p6)",
5810  "(n,p7)",
5811  "(n,p8)",
5812  "(n,p9)",
5813  "(n,p10)",
5814  "(n,p11)",
5815  "(n,p12)",
5816  "(n,p13)",
5817  "(n,p14)",
5818  "(n,p15)",
5819  "(n,p16)",
5820  "(n,p17)",
5821  "(n,p18)",
5822  "(n,p19)",
5823  "(n,p20)",
5824  "(n,p21)",
5825  "(n,p22)",
5826  "(n,p23)",
5827  "(n,p24)",
5828  "(n,p25)",
5829  "(n,p26)",
5830  "(n,p27)",
5831  "(n,p28)",
5832  "(n,p29)",
5833  "(n,p30)",
5834  "(n,p31)",
5835  "(n,p32)",
5836  "(n,p33)",
5837  "(n,p34)",
5838  "(n,p35)",
5839  "(n,p36)",
5840  "(n,p37)",
5841  "(n,p38)",
5842  "(n,p39)",
5843  "(n,p40)",
5844  "(n,p41)",
5845  "(n,p42)",
5846  "(n,p43)",
5847  "(n,p44)",
5848  "(n,p45)",
5849  "(n,p46)",
5850  "(n,p47)",
5851  "(n,p48)",
5852  "(n,pc)",
5853  "(n,d0)",
5854  "(n,d1)",
5855  "(n,d2)",
5856  "(n,d3)",
5857  "(n,d4)",
5858  "(n,d5)",
5859  "(n,d6)",
5860  "(n,d7)",
5861  "(n,d8)",
5862  "(n,d9)",
5863  "(n,d10)",
5864  "(n,d11)",
5865  "(n,d12)",
5866  "(n,d13)",
5867  "(n,d14)",
5868  "(n,d15)",
5869  "(n,d16)",
5870  "(n,d17)",
5871  "(n,d18)",
5872  "(n,d19)",
5873  "(n,d20)",
5874  "(n,d21)",
5875  "(n,d22)",
5876  "(n,d23)",
5877  "(n,d24)",
5878  "(n,d25)",
5879  "(n,d26)",
5880  "(n,d27)",
5881  "(n,d28)",
5882  "(n,d29)",
5883  "(n,d30)",
5884  "(n,d31)",
5885  "(n,d32)",
5886  "(n,d33)",
5887  "(n,d34)",
5888  "(n,d35)",
5889  "(n,d36)",
5890  "(n,d37)",
5891  "(n,d38)",
5892  "(n,d39)",
5893  "(n,d40)",
5894  "(n,d41)",
5895  "(n,d42)",
5896  "(n,d43)",
5897  "(n,d44)",
5898  "(n,d45)",
5899  "(n,d46)",
5900  "(n,d47)",
5901  "(n,d48)",
5902  "(n,dc)",
5903  "(z,t0)",
5904  "(z,t1)",
5905  "(z,t2)",
5906  "(z,t3)",
5907  "(z,t4)",
5908  "(z,t5)",
5909  "(z,t6)",
5910  "(z,t7)",
5911  "(z,t8)",
5912  "(z,t9)",
5913  "(z,t10)",
5914  "(z,t11)",
5915  "(z,t12)",
5916  "(z,t13)",
5917  "(z,t14)",
5918  "(z,t15)",
5919  "(z,t16)",
5920  "(z,t17)",
5921  "(z,t18)",
5922  "(z,t19)",
5923  "(z,t20)",
5924  "(z,t21)",
5925  "(z,t22)",
5926  "(z,t23)",
5927  "(z,t24)",
5928  "(z,t25)",
5929  "(z,t26)",
5930  "(z,t27)",
5931  "(z,t28)",
5932  "(z,t29)",
5933  "(z,t30)",
5934  "(z,t31)",
5935  "(z,t32)",
5936  "(z,t33)",
5937  "(z,t34)",
5938  "(z,t35)",
5939  "(z,t36)",
5940  "(z,t37)",
5941  "(z,t38)",
5942  "(z,t39)",
5943  "(z,t40)",
5944  "(z,t41)",
5945  "(z,t42)",
5946  "(z,t43)",
5947  "(z,t44)",
5948  "(z,t45)",
5949  "(z,t46)",
5950  "(z,t47)",
5951  "(z,t48)",
5952  "(n,tc)",
5953  "(n,3He0)",
5954  "(n,3He1)",
5955  "(n,3He2)",
5956  "(n,3He3)",
5957  "(n,3He4)",
5958  "(n,3He5)",
5959  "(n,3He6)",
5960  "(n,3He7)",
5961  "(n,3He8)",
5962  "(n,3He9)",
5963  "(n,3He10)",
5964  "(n,3He11)",
5965  "(n,3He12)",
5966  "(n,3He13)",
5967  "(n,3He14)",
5968  "(n,3He15)",
5969  "(n,3He16)",
5970  "(n,3He17)",
5971  "(n,3He18)",
5972  "(n,3He19)",
5973  "(n,3He20)",
5974  "(n,3He21)",
5975  "(n,3He22)",
5976  "(n,3He23)",
5977  "(n,3He24)",
5978  "(n,3He25)",
5979  "(n,3He26)",
5980  "(n,3He27)",
5981  "(n,3He28)",
5982  "(n,3He29)",
5983  "(n,3He30)",
5984  "(n,3He31)",
5985  "(n,3He32)",
5986  "(n,3He33)",
5987  "(n,3He34)",
5988  "(n,3He35)",
5989  "(n,3He36)",
5990  "(n,3He37)",
5991  "(n,3He38)",
5992  "(n,3He39)",
5993  "(n,3He40)",
5994  "(n,3He41)",
5995  "(n,3He42)",
5996  "(n,3He43)",
5997  "(n,3He44)",
5998  "(n,3He45)",
5999  "(n,3He46)",
6000  "(n,3He47)",
6001  "(n,3He48)",
6002  "(n,3Hec)",
6003  "(z,a0)",
6004  "(z,a1)",
6005  "(z,a2)",
6006  "(z,a3)",
6007  "(z,a4)",
6008  "(z,a5)",
6009  "(z,a6)",
6010  "(z,a7)",
6011  "(z,a8)",
6012  "(z,a9)",
6013  "(z,a10)",
6014  "(z,a11)",
6015  "(z,a12)",
6016  "(z,a13)",
6017  "(z,a14)",
6018  "(z,a15)",
6019  "(z,a16)",
6020  "(z,a17)",
6021  "(z,a18)",
6022  "(z,a19)",
6023  "(z,a20)",
6024  "(z,a21)",
6025  "(z,a22)",
6026  "(z,a23)",
6027  "(z,a24)",
6028  "(z,a25)",
6029  "(z,a26)",
6030  "(z,a27)",
6031  "(z,a28)",
6032  "(z,a29)",
6033  "(z,a30)",
6034  "(z,a31)",
6035  "(z,a32)",
6036  "(z,a33)",
6037  "(z,a34)",
6038  "(z,a35)",
6039  "(z,a36)",
6040  "(z,a37)",
6041  "(z,a38)",
6042  "(z,a39)",
6043  "(z,a40)",
6044  "(z,a41)",
6045  "(z,a42)",
6046  "(z,a43)",
6047  "(z,a44)",
6048  "(z,a45)",
6049  "(z,a46)",
6050  "(z,a47)",
6051  "(z,a48)",
6052  "(n,ac)",
6053  "Lumped-Reaction Covariances",
6054  "production of any excited state nucleus",
6055  "(z,b-)",
6056  "(z,b+)",
6057  "(z,ec)",
6058  "(z,b-n)",
6059  "(z,b-a)",
6060  "(z,it)",
6061  "(z,b+a)",
6062  "(z,ec+b+)",
6063  "(z,b+p)",
6064  "(z,b-2n)",
6065  "(z,b-3n)",
6066  "(z,b-4n)",
6067  "(z,ecp)",
6068  "(z,eca)",
6069  "(z,b+2p)",
6070  "(z,ec2p)",
6071  "(z,2b-)",
6072  "(z,b-p)",
6073  "(z,14c)",
6074  "(z,b+3p)",
6075  "(z,sf)",
6076  "(z,2b+)",
6077  "(z,2ec)"
6078  };
6079 
6080  // fill the maps
6081  for (int i = 0; i < NUM_RX_NAMES; i++) {
6082  rx = _names[i];
6083  rxid = pyne::rxname::hash(rx);
6084  id_name[rxid] = rx;
6085  name_id[rx] = rxid;
6086  if (0 < _mts[i]) {
6087  id_mt[rxid] = _mts[i];
6088  mt_id[_mts[i]] = rxid;
6089  };
6090  labels[rxid] = _labels[i];
6091  docs[rxid] = _docs[i];
6092  };
6093 
6094  // set alternative names
6095  altnames["tot"] = name_id["total"];
6096  altnames["s"] = name_id["scattering"];
6097  altnames["scat"] = name_id["scattering"];
6098  altnames["e"] = name_id["elastic"];
6099  altnames["elas"] = name_id["elastic"];
6100  altnames["i"] = name_id["n"];
6101  altnames["inel"] = name_id["n"];
6102  altnames["inelastic"] = name_id["n"];
6103  altnames["abs"] = name_id["absorption"];
6104  altnames["fis"] = name_id["fission"];
6105  altnames["fiss"] = name_id["fission"];
6106  altnames["alpha"] = name_id["a"];
6107  altnames["deut"] = name_id["d"];
6108  altnames["deuteron"] = name_id["d"];
6109  altnames["deuterium"] = name_id["d"];
6110  altnames["trit"] = name_id["t"];
6111  altnames["triton"] = name_id["t"];
6112  altnames["tritium"] = name_id["t"];
6113  altnames["proton"] = name_id["p"];
6114  altnames["h"] = name_id["He3"]; // 'h' stands for helion
6115  altnames["he3"] = name_id["He3"];
6116  altnames["HE3"] = name_id["He3"];
6117  altnames["3HE"] = name_id["He3"];
6118  altnames["3He"] = name_id["He3"];
6119  altnames["3he"] = name_id["He3"];
6120  altnames["he-3"] = name_id["He3"];
6121  altnames["HE-3"] = name_id["He3"];
6122  altnames["*"] = name_id["excited"];
6123  altnames["2n"] = name_id["z_2n"];
6124  altnames["2p"] = name_id["z_2p"];
6125  altnames["3h"] = name_id["t"];
6126  altnames["g"] = name_id["it"];
6127  altnames["b-"] = name_id["bminus"];
6128  altnames["b+"] = name_id["bplus"];
6129  altnames["b-n"] = name_id["bminus_n"];
6130  altnames["b-a"] = name_id["bminus_a"];
6131  altnames["b+a"] = name_id["bplus_a"];
6132  altnames["ec+b+"] = name_id["ec_bplus"];
6133  altnames["b+p"] = name_id["bplus_p"];
6134  altnames["b-2n"] = name_id["bminus_2n"];
6135  altnames["b-3n"] = name_id["bminus_3n"];
6136  altnames["b-4n"] = name_id["bminus_4n"];
6137  altnames["b+2p"] = name_id["bplus_2p"];
6138  altnames["ec2p"] = name_id["ec_2p"];
6139  altnames["2b-"] = name_id["decay_2bminus"];
6140  altnames["b-p"] = name_id["bminus_p"];
6141  altnames["14c"] = name_id["decay_14c"];
6142  altnames["b+3p"] = name_id["bplus_3p"];
6143  altnames["2b+"] = name_id["decay_2bplus"];
6144  altnames["2ec"] = name_id["decay_2ec"];
6145 
6146 
6147  // set the nuclide difference mappings, offset_id
6148  // offset_id[incident particle type "n", "p", ...][delta Z num][delta A num][rxid]
6149  // offset_id mapping may be ambiquious so they must come before the id_offsets!
6150  // the following should be sorted by (dz, da, ds)
6151  // neutrons:
6152  offset_id[make_pair("n", offset(-4, -8))] = name_id["n2a"];
6153  offset_id[make_pair("n", offset(-4, -7))] = name_id["z_2a"];
6154  offset_id[make_pair("n", offset(-2, -5))] = name_id["z_2na"];
6155  offset_id[make_pair("n", offset(-2, -4))] = name_id["na"];
6156  offset_id[make_pair("n", offset(-2, -4, 1))] = name_id["na_1"];
6157  offset_id[make_pair("n", offset(-2, -4, 2))] = name_id["na_2"];
6158  offset_id[make_pair("n", offset(-2, -3))] = name_id["a"];
6159  offset_id[make_pair("n", offset(-2, -3, 1))] = name_id["a_1"];
6160  offset_id[make_pair("n", offset(-2, -3, 2))] = name_id["a_2"];
6161  offset_id[make_pair("n", offset(-2, -2))] = name_id["He3"];
6162  offset_id[make_pair("n", offset(-2, -2, 1))] = name_id["He3_1"];
6163  offset_id[make_pair("n", offset(-2, -2, 2))] = name_id["He3_2"];
6164  offset_id[make_pair("n", offset(-2, -1))] = name_id["z_2p"];
6165  offset_id[make_pair("n", offset(-2, -1, 1))] = name_id["z_2p_1"];
6166  offset_id[make_pair("n", offset(-2, -1, 2))] = name_id["z_2p_2"];
6167  offset_id[make_pair("n", offset(-1, -3))] = name_id["nt"];
6168  offset_id[make_pair("n", offset(-1, -3, 1))] = name_id["nt_1"];
6169  offset_id[make_pair("n", offset(-1, -3, 2))] = name_id["nt_2"];
6170  offset_id[make_pair("n", offset(-1, -2))] = name_id["t"];
6171  offset_id[make_pair("n", offset(-1, -2, 1))] = name_id["t_1"];
6172  offset_id[make_pair("n", offset(-1, -2, 2))] = name_id["t_2"];
6173  offset_id[make_pair("n", offset(-1, -1))] = name_id["d"];
6174  offset_id[make_pair("n", offset(-1, -1, 1))] = name_id["d_1"];
6175  offset_id[make_pair("n", offset(-1, -1, 2))] = name_id["d_2"];
6176  offset_id[make_pair("n", offset(-1, 0))] = name_id["p"];
6177  offset_id[make_pair("n", offset(-1, 0, 1))] = name_id["p_1"];
6178  offset_id[make_pair("n", offset(-1, 0, 2))] = name_id["p_2"];
6179  offset_id[make_pair("n", offset(0, -3))] = name_id["z_4n"];
6180  offset_id[make_pair("n", offset(0, -3, 1))] = name_id["z_4n_1"];
6181  offset_id[make_pair("n", offset(0, -2))] = name_id["z_3n"];
6182  offset_id[make_pair("n", offset(0, -2, 1))] = name_id["z_3n_1"];
6183  offset_id[make_pair("n", offset(0, -2, 2))] = name_id["z_3n_2"];
6184  offset_id[make_pair("n", offset(0, -1))] = name_id["z_2n"];
6185  offset_id[make_pair("n", offset(0, -1, 1))] = name_id["z_2n_1"];
6186  offset_id[make_pair("n", offset(0, -1, 2))] = name_id["z_2n_2"];
6187  offset_id[make_pair("n", offset(0, 0))] = name_id["scattering"];
6188  offset_id[make_pair("n", offset(0, 0, 1))] = name_id["n_1"];
6189  offset_id[make_pair("n", offset(0, 0, 2))] = name_id["n_2"];
6190  offset_id[make_pair("n", offset(0, 1))] = name_id["absorption"];
6191  offset_id[make_pair("n", offset(0, 1, 1))] = name_id["gamma_1"];
6192  offset_id[make_pair("n", offset(0, 1, 2))] = name_id["gamma_2"];
6193  // proton:
6194  offset_id[make_pair("p", offset(0, 0))] = name_id["scattering"];
6195  offset_id[make_pair("p", offset(1, 1))] = name_id["absorption"];
6196  offset_id[make_pair("p", offset(1, 0))] = name_id["n"];
6197  offset_id[make_pair("p", offset(1, -1))] = name_id["z_2n"];
6198  offset_id[make_pair("p", offset(1, -2))] = name_id["z_3n"];
6199  offset_id[make_pair("p", offset(1, -3))] = name_id["z_4n"];
6200  offset_id[make_pair("p", offset(-1, -1))] = name_id["z_2p"];
6201  offset_id[make_pair("p", offset(0, -1))] = name_id["d"];
6202  offset_id[make_pair("p", offset(0, -2))] = name_id["t"];
6203  offset_id[make_pair("p", offset(-1, -2))] = name_id["He3"];
6204  offset_id[make_pair("p", offset(-1, -3))] = name_id["a"];
6205  // deuterium:
6206  offset_id[make_pair("d", offset(0, 0))] = name_id["scattering"];
6207  offset_id[make_pair("d", offset(1, 2))] = name_id["absorption"];
6208  offset_id[make_pair("d", offset(1, 1))] = name_id["n"];
6209  offset_id[make_pair("d", offset(1, 0))] = name_id["z_2n"];
6210  offset_id[make_pair("d", offset(1, -1))] = name_id["z_3n"];
6211  offset_id[make_pair("d", offset(1, -2))] = name_id["z_4n"];
6212  offset_id[make_pair("d", offset(0, 1))] = name_id["p"];
6213  offset_id[make_pair("d", offset(-1, 0))] = name_id["z_2p"];
6214  offset_id[make_pair("d", offset(0, -1))] = name_id["t"];
6215  offset_id[make_pair("d", offset(-1, -1))] = name_id["He3"];
6216  offset_id[make_pair("d", offset(-1, -2))] = name_id["a"];
6217  // tritium:
6218  offset_id[make_pair("t", offset(0, 0))] = name_id["scattering"];
6219  offset_id[make_pair("t", offset(1, 3))] = name_id["absorption"];
6220  offset_id[make_pair("t", offset(1, 2))] = name_id["n"];
6221  offset_id[make_pair("t", offset(1, 1))] = name_id["z_2n"];
6222  offset_id[make_pair("t", offset(1, 0))] = name_id["z_3n"];
6223  offset_id[make_pair("t", offset(1, -1))] = name_id["z_4n"];
6224  offset_id[make_pair("t", offset(0, 2))] = name_id["p"];
6225  offset_id[make_pair("t", offset(-1, 1))] = name_id["z_2p"];
6226  offset_id[make_pair("t", offset(0, 1))] = name_id["d"];
6227  offset_id[make_pair("t", offset(-1, 0))] = name_id["He3"];
6228  offset_id[make_pair("t", offset(-1, -1))] = name_id["a"];
6229  // He3:
6230  offset_id[make_pair("He3", offset(0, 0))] = name_id["scattering"];
6231  offset_id[make_pair("He3", offset(2, 3))] = name_id["absorption"];
6232  offset_id[make_pair("He3", offset(2, 2))] = name_id["n"];
6233  offset_id[make_pair("He3", offset(2, 1))] = name_id["z_2n"];
6234  offset_id[make_pair("He3", offset(2, 0))] = name_id["z_3n"];
6235  offset_id[make_pair("He3", offset(2, -1))] = name_id["z_4n"];
6236  offset_id[make_pair("He3", offset(1, 2))] = name_id["p"];
6237  offset_id[make_pair("He3", offset(0, 1))] = name_id["z_2p"];
6238  offset_id[make_pair("He3", offset(1, 1))] = name_id["d"];
6239  offset_id[make_pair("He3", offset(1, 0))] = name_id["t"];
6240  offset_id[make_pair("He3", offset(0, -1))] = name_id["a"];
6241  // alpha:
6242  offset_id[make_pair("a", offset(0, 0))] = name_id["scattering"];
6243  offset_id[make_pair("a", offset(2, 4))] = name_id["absorption"];
6244  offset_id[make_pair("a", offset(2, 3))] = name_id["n"];
6245  offset_id[make_pair("a", offset(2, 2))] = name_id["z_2n"];
6246  offset_id[make_pair("a", offset(2, 1))] = name_id["z_3n"];
6247  offset_id[make_pair("a", offset(2, 0))] = name_id["z_4n"];
6248  offset_id[make_pair("a", offset(1, 3))] = name_id["p"];
6249  offset_id[make_pair("a", offset(0, 2))] = name_id["z_2p"];
6250  offset_id[make_pair("a", offset(1, 2))] = name_id["d"];
6251  offset_id[make_pair("a", offset(1, 1))] = name_id["t"];
6252  offset_id[make_pair("a", offset(0, 1))] = name_id["He3"];
6253  // gamma:
6254  offset_id[make_pair("gamma", offset(0, -1))] = name_id["n"];
6255  offset_id[make_pair("gamma", offset(0, -2))] = name_id["z_2n"];
6256  offset_id[make_pair("gamma", offset(0, -3))] = name_id["z_3n"];
6257  offset_id[make_pair("gamma", offset(0, -4))] = name_id["z_4n"];
6258  offset_id[make_pair("gamma", offset(-1, -1))] = name_id["p"];
6259  offset_id[make_pair("gamma", offset(-2, -2))] = name_id["z_2p"];
6260  offset_id[make_pair("gamma", offset(-1, -2))] = name_id["d"];
6261  offset_id[make_pair("gamma", offset(-1, -3))] = name_id["t"];
6262  offset_id[make_pair("gamma", offset(-2, -3))] = name_id["He3"];
6263  offset_id[make_pair("gamma", offset(-2, -4))] = name_id["a"];
6264  // decay:
6265  offset_id[make_pair("decay", offset(0, -1))] = name_id["n"];
6266  offset_id[make_pair("decay", offset(0, -2))] = name_id["z_2n"];
6267  offset_id[make_pair("decay", offset(0, -3))] = name_id["z_3n"];
6268  offset_id[make_pair("decay", offset(0, -4))] = name_id["z_4n"];
6269  offset_id[make_pair("decay", offset(-1, -1))] = name_id["p"];
6270  offset_id[make_pair("decay", offset(-2, -2))] = name_id["z_2p"];
6271  offset_id[make_pair("decay", offset(-1, -2))] = name_id["d"];
6272  offset_id[make_pair("decay", offset(-1, -3))] = name_id["t"];
6273  offset_id[make_pair("decay", offset(-2, -3))] = name_id["He3"];
6274  offset_id[make_pair("decay", offset(-2, -4))] = name_id["a"];
6275  offset_id[make_pair("decay", offset(1, 0))] = name_id["bminus"];
6276  offset_id[make_pair("decay", offset(-1, 0))] = name_id["bplus"];
6277  offset_id[make_pair("decay", offset(1, -1))] = name_id["bminus_n"];
6278  offset_id[make_pair("decay", offset(-1, -4))] = name_id["bminus_a"];
6279  offset_id[make_pair("decay", offset(0, 0))] = name_id["it"];
6280  offset_id[make_pair("decay", offset(-3, -4))] = name_id["bplus_a"];
6281  offset_id[make_pair("decay", offset(-2, -1))] = name_id["bplus_p"];
6282  offset_id[make_pair("decay", offset(1, -2))] = name_id["bminus_2n"];
6283  offset_id[make_pair("decay", offset(1, -3))] = name_id["bminus_3n"];
6284  offset_id[make_pair("decay", offset(1, -4))] = name_id["bminus_4n"];
6285  offset_id[make_pair("decay", offset(-3, -2))] = name_id["bplus_2p"];
6286  offset_id[make_pair("decay", offset(-4, -3))] = name_id["bplus_3p"];
6287  offset_id[make_pair("decay", offset(2, 0))] = name_id["decay_2bminus"];
6288  offset_id[make_pair("decay", offset(-2, 0))] = name_id["decay_2bplus"];
6289  offset_id[make_pair("decay", offset(-6, -14))] = name_id["decay_14c"];
6290 
6291  // pre-loaded child offsets
6292  std::map<std::pair<std::string, int>, unsigned int>::iterator ioffid;
6293  for (ioffid = offset_id.begin(); ioffid != offset_id.end(); ioffid++) {
6294  id_offset[make_pair(ioffid->first.first, ioffid->second)] = ioffid->first.second;
6295  };
6296  // neutrons:
6297  id_offset[make_pair("n", name_id["nHe3"])] = offset(-2, -3);
6298  id_offset[make_pair("n", name_id["nHe3_1"])] = offset(-2, -3, 2);
6299  id_offset[make_pair("n", name_id["nHe3_2"])] = offset(-2, -3, 2);
6300  id_offset[make_pair("n", name_id["z_3np"])] = offset(-1, -3);
6301  id_offset[make_pair("n", name_id["nd"])] = offset(-1, -2);
6302  id_offset[make_pair("n", name_id["nd_1"])] = offset(-1, -2, 1);
6303  id_offset[make_pair("n", name_id["nd_2"])] = offset(-1, -2, 2);
6304  id_offset[make_pair("n", name_id["np"])] = offset(-1, -1);
6305  id_offset[make_pair("n", name_id["np_1"])] = offset(-1, -1, 1);
6306  id_offset[make_pair("n", name_id["np_2"])] = offset(-1, -1, 2);
6307  id_offset[make_pair("n", name_id["n"])] = offset(0, 0);
6308  id_offset[make_pair("n", name_id["gamma"])] = offset(0, 1);
6309  // decay:
6310  id_offset[make_pair("decay", name_id["bminus_p"])] = offset(0, -1);
6311  id_offset[make_pair("decay", name_id["ec_2p"])] = offset(-3, -2);
6312  id_offset[make_pair("decay", name_id["ec"])] = offset(-1, 0);
6313  id_offset[make_pair("decay", name_id["ec_bplus"])] = offset(-1, 0);
6314  id_offset[make_pair("decay", name_id["ecp"])] = offset(-2, -1);
6315  id_offset[make_pair("decay", name_id["eca"])] = offset(-3, -4);
6316  id_offset[make_pair("decay", name_id["decay_2ec"])] = offset(-2, 0);
6317  return NULL;
6318 };
6320 
6321 
6322 unsigned int pyne::rxname::hash(std::string s) {
6323  return pyne::rxname::hash(s.c_str());
6324  };
6325 
6326 unsigned int pyne::rxname::hash(const char * s) {
6327  // Modified from http://cboard.cprogramming.com/tech-board/114650-string-hashing-algorithm.html#post853145
6328  // starting from h = 32*2^5 > 1000, rather than 0, to reserve space for MT numbers
6329  int c;
6330  unsigned int h = 32;
6331  while((c = *s++)) {
6332  h = ((h << 5) + h) ^ c;
6333  }
6334  return h;
6335 };
6336 
6337 
6338 // ************************
6339 // *** name functions *****
6340 // ************************
6341 
6342 std::string pyne::rxname::name(char * s) {
6343  return pyne::rxname::name(std::string(s));
6344  };
6345 
6346 std::string pyne::rxname::name(std::string s) {
6347  if (0 < names.count(s))
6348  return s;
6349  if (0 < altnames.count(s))
6350  return id_name[altnames[s]];
6351  // see if id in string form
6352  int i = 0;
6353  int I = s.length();
6354  int found = 0;
6355  while(0 <= found && i < I) {
6356  found = pyne::digits.find(s[i]);
6357  i++;
6358  }
6359  if (0<=found)
6360  return pyne::rxname::name(atoi(s.c_str()));
6361  // dead...
6362  throw NotAReaction(s, "???");
6363 };
6364 
6365 
6366 std::string pyne::rxname::name(int n) {
6367  return pyne::rxname::name((unsigned int) n);
6368 };
6369 
6370 std::string pyne::rxname::name(unsigned int n) {
6371  if (0 < id_name.count(n))
6372  return id_name[n];
6373  if (0 < mt_id.count(n))
6374  return id_name[mt_id[n]];
6375  throw NotAReaction(n, "???");
6376 };
6377 
6378 
6379 std::string pyne::rxname::name(int from_nuc, int to_nuc, std::string z) {
6380  // This assumes nuclides are in id form
6381  std::pair<std::string, int> key = std::make_pair(z, to_nuc - from_nuc);
6382  if (0 == offset_id.count(key))
6383  throw IndeterminateReactionForm("z=" + z + ", " + pyne::to_str(from_nuc) + \
6384  ", " + pyne::to_str(to_nuc), "???");
6385  return id_name[offset_id[key]];
6386 };
6387 
6388 std::string pyne::rxname::name(std::string from_nuc, int to_nuc, std::string z) {
6389  return pyne::rxname::name(pyne::nucname::id(from_nuc),
6390  pyne::nucname::id(to_nuc), z);
6391 };
6392 
6393 std::string pyne::rxname::name(int from_nuc, std::string to_nuc, std::string z) {
6394  return pyne::rxname::name(pyne::nucname::id(from_nuc),
6395  pyne::nucname::id(to_nuc), z);
6396 };
6397 
6398 std::string pyne::rxname::name(std::string from_nuc, std::string to_nuc, std::string z) {
6399  return pyne::rxname::name(pyne::nucname::id(from_nuc),
6400  pyne::nucname::id(to_nuc), z);
6401 };
6402 
6403 
6404 
6405 // **********************
6406 // *** id functions *****
6407 // **********************
6408 unsigned int pyne::rxname::id(int x) {
6409  return name_id[pyne::rxname::name(x)];
6410 };
6411 
6412 unsigned int pyne::rxname::id(unsigned int x) {
6413  if (0 < id_name.count(x))
6414  return x;
6415  if (0 < mt_id.count(x))
6416  return mt_id[x];
6417  return name_id[pyne::rxname::name(x)];
6418 };
6419 
6420 unsigned int pyne::rxname::id(const char * x) {
6421  return name_id[pyne::rxname::name(x)];
6422 };
6423 
6424 unsigned int pyne::rxname::id(std::string x) {
6425  if (0 < names.count(x))
6426  return name_id[x];
6427  if (0 < altnames.count(x))
6428  return altnames[x];
6429  return name_id[pyne::rxname::name(x)];
6430 };
6431 
6432 unsigned int pyne::rxname::id(int from_nuc, int to_nuc, std::string z) {
6433  // This assumes nuclides are in id form
6434  std::pair<std::string, int> key = std::make_pair(z, to_nuc - from_nuc);
6435  if (0 == offset_id.count(key))
6436  throw IndeterminateReactionForm("z=" + z + ", " + pyne::to_str(from_nuc) + \
6437  ", " + pyne::to_str(to_nuc), "???");
6438  return offset_id[key];
6439 };
6440 
6441 unsigned int pyne::rxname::id(int from_nuc, std::string to_nuc, std::string z) {
6442  return pyne::rxname::id(pyne::nucname::id(from_nuc),
6443  pyne::nucname::id(to_nuc), z);
6444 };
6445 
6446 unsigned int pyne::rxname::id(std::string from_nuc, int to_nuc, std::string z) {
6447  return pyne::rxname::id(pyne::nucname::id(from_nuc),
6448  pyne::nucname::id(to_nuc), z);
6449 };
6450 
6451 unsigned int pyne::rxname::id(std::string from_nuc, std::string to_nuc, std::string z) {
6452  return pyne::rxname::id(pyne::nucname::id(from_nuc),
6453  pyne::nucname::id(to_nuc), z);
6454 };
6455 
6456 
6457 // **********************
6458 // *** MT functions *****
6459 // **********************
6460 unsigned int pyne::rxname::mt(int x) {
6461  unsigned int rxid = pyne::rxname::id(x);
6462  if (0 == id_mt.count(rxid))
6463  throw NotAReaction();
6464  return id_mt[rxid];
6465 };
6466 
6467 unsigned int pyne::rxname::mt(unsigned int x) {
6468  unsigned int rxid = pyne::rxname::id(x);
6469  if (0 == id_mt.count(rxid))
6470  throw NotAReaction();
6471  return id_mt[rxid];
6472 };
6473 
6474 unsigned int pyne::rxname::mt(char * x) {
6475  unsigned int rxid = pyne::rxname::id(x);
6476  if (0 == id_mt.count(rxid))
6477  throw NotAReaction();
6478  return id_mt[rxid];
6479 };
6480 
6481 unsigned int pyne::rxname::mt(std::string x) {
6482  unsigned int rxid = pyne::rxname::id(x);
6483  if (0 == id_mt.count(rxid))
6484  throw NotAReaction();
6485  return id_mt[rxid];
6486 };
6487 
6488 unsigned int pyne::rxname::mt(int from_nuc, int to_nuc, std::string z) {
6489  unsigned int rxid = pyne::rxname::id(from_nuc, to_nuc, z);
6490  if (0 == id_mt.count(rxid))
6491  throw NotAReaction();
6492  return id_mt[rxid];
6493 };
6494 
6495 unsigned int pyne::rxname::mt(int from_nuc, std::string to_nuc, std::string z) {
6496  unsigned int rxid = pyne::rxname::id(from_nuc, to_nuc, z);
6497  if (0 == id_mt.count(rxid))
6498  throw NotAReaction();
6499  return id_mt[rxid];
6500 };
6501 
6502 unsigned int pyne::rxname::mt(std::string from_nuc, int to_nuc, std::string z) {
6503  unsigned int rxid = pyne::rxname::id(from_nuc, to_nuc, z);
6504  if (0 == id_mt.count(rxid))
6505  throw NotAReaction();
6506  return id_mt[rxid];
6507 };
6508 
6509 unsigned int pyne::rxname::mt(std::string from_nuc, std::string to_nuc, std::string z) {
6510  unsigned int rxid = pyne::rxname::id(from_nuc, to_nuc, z);
6511  if (0 == id_mt.count(rxid))
6512  throw NotAReaction();
6513  return id_mt[rxid];
6514 };
6515 
6516 
6517 // ***********************
6518 // *** label functions ***
6519 // ***********************
6520 std::string pyne::rxname::label(int x) {
6521  return labels[pyne::rxname::id(x)];
6522 };
6523 
6524 std::string pyne::rxname::label(unsigned int x) {
6525  return labels[pyne::rxname::id(x)];
6526 };
6527 
6528 std::string pyne::rxname::label(char * x) {
6529  return labels[pyne::rxname::id(x)];
6530 };
6531 
6532 std::string pyne::rxname::label(std::string x) {
6533  return labels[pyne::rxname::id(x)];
6534 };
6535 
6536 std::string pyne::rxname::label(int from_nuc, int to_nuc, std::string z) {
6537  return labels[pyne::rxname::id(from_nuc, to_nuc, z)];
6538 };
6539 
6540 std::string pyne::rxname::label(int from_nuc, std::string to_nuc, std::string z) {
6541  return labels[pyne::rxname::id(from_nuc, to_nuc, z)];
6542 };
6543 
6544 std::string pyne::rxname::label(std::string from_nuc, int to_nuc, std::string z) {
6545  return labels[pyne::rxname::id(from_nuc, to_nuc, z)];
6546 };
6547 
6548 std::string pyne::rxname::label(std::string from_nuc, std::string to_nuc, std::string z) {
6549  return labels[pyne::rxname::id(from_nuc, to_nuc, z)];
6550 };
6551 
6552 
6553 // *********************
6554 // *** doc functions ***
6555 // *********************
6556 std::string pyne::rxname::doc(int x) {
6557  return docs[pyne::rxname::id(x)];
6558 };
6559 
6560 std::string pyne::rxname::doc(unsigned int x) {
6561  return docs[pyne::rxname::id(x)];
6562 };
6563 
6564 std::string pyne::rxname::doc(char * x) {
6565  return docs[pyne::rxname::id(x)];
6566 };
6567 
6568 std::string pyne::rxname::doc(std::string x) {
6569  return docs[pyne::rxname::id(x)];
6570 };
6571 
6572 std::string pyne::rxname::doc(int from_nuc, int to_nuc, std::string z) {
6573  return docs[pyne::rxname::id(from_nuc, to_nuc, z)];
6574 };
6575 
6576 std::string pyne::rxname::doc(int from_nuc, std::string to_nuc, std::string z) {
6577  return docs[pyne::rxname::id(from_nuc, to_nuc, z)];
6578 };
6579 
6580 std::string pyne::rxname::doc(std::string from_nuc, int to_nuc, std::string z) {
6581  return docs[pyne::rxname::id(from_nuc, to_nuc, z)];
6582 };
6583 
6584 std::string pyne::rxname::doc(std::string from_nuc, std::string to_nuc, std::string z) {
6585  return docs[pyne::rxname::id(from_nuc, to_nuc, z)];
6586 };
6587 
6588 
6589 // ***********************
6590 // *** child functions ***
6591 // ***********************
6592 
6593 int pyne::rxname::child(int nuc, unsigned int rx, std::string z) {
6594  // This assumes nuclides are in id form
6595  std::pair<std::string, unsigned int> key = std::make_pair(z, rx);
6596  if (0 == id_offset.count(key))
6597  throw IndeterminateReactionForm("z=" + z + ", rx=" + pyne::to_str(rx), "???");
6598  int to_nuc = nuc + id_offset[key];
6599  if (!pyne::nucname::isnuclide(to_nuc))
6600  throw pyne::nucname::NotANuclide(nuc, to_nuc);
6601  return to_nuc;
6602 };
6603 
6604 int pyne::rxname::child(int nuc, std::string rx, std::string z) {
6605  return child(nuc, id(rx), z);
6606 };
6607 
6608 int pyne::rxname::child(std::string nuc, unsigned int rx, std::string z) {
6609  return child(pyne::nucname::id(nuc), rx, z);
6610 };
6611 
6612 int pyne::rxname::child(std::string nuc, std::string rx, std::string z) {
6613  return child(pyne::nucname::id(nuc), id(rx), z);
6614 };
6615 
6616 
6617 // ************************
6618 // *** parent functions ***
6619 // ************************
6620 
6621 int pyne::rxname::parent(int nuc, unsigned int rx, std::string z) {
6622  // This assumes nuclides are in id form
6623  std::pair<std::string, unsigned int> key = std::make_pair(z, rx);
6624  if (0 == id_offset.count(key))
6625  throw IndeterminateReactionForm("z=" + z + ", rx=" + pyne::to_str(rx), "???");
6626  int from_nuc = nuc - id_offset[key];
6627  if (!pyne::nucname::isnuclide(from_nuc))
6628  throw pyne::nucname::NotANuclide(from_nuc, nuc);
6629  return from_nuc;
6630 };
6631 
6632 int pyne::rxname::parent(int nuc, std::string rx, std::string z) {
6633  return parent(nuc, id(rx), z);
6634 };
6635 
6636 int pyne::rxname::parent(std::string nuc, unsigned int rx, std::string z) {
6637  return parent(pyne::nucname::id(nuc), rx, z);
6638 };
6639 
6640 int pyne::rxname::parent(std::string nuc, std::string rx, std::string z) {
6641  return parent(pyne::nucname::id(nuc), id(rx), z);
6642 };
6643 
6644 //
6645 // end of src/rxname.cpp
6646 //
6647 
6648 
6649 //
6650 // start of src/data.cpp
6651 //
6652 // Implements basic nuclear data functions.
6653 #ifndef PYNE_IS_AMALGAMATED
6654 #include "data.h"
6655 #endif
6656 
6657 //
6658 // Math Helpers
6659 //
6660 
6661 const double pyne::pi = 3.14159265359;
6662 const double pyne::N_A = 6.0221415e+23;
6663 const double pyne::barns_per_cm2 = 1e24;
6664 const double pyne::cm2_per_barn = 1e-24;
6665 const double pyne::sec_per_day = 24.0 * 3600.0;
6666 const double pyne::MeV_per_K = 8.617343e-11;
6667 const double pyne::MeV_per_MJ = 1.60217657e-19;
6668 const double pyne::Bq_per_Ci = 3.7e10;
6669 const double pyne::Ci_per_Bq = 2.7027027e-11;
6670 
6671 
6672 /********************************/
6673 /*** data_checksums Functions ***/
6674 /********************************/
6675 
6676 std::map<std::string, std::string> pyne::get_data_checksums() {
6677  std::map<std::string, std::string> temp_map;
6678  // Initialization of dataset hashes
6679  temp_map["/atomic_mass"]="10edfdc662e35bdfab91beb89285efff";
6680  temp_map["/material_library"]="8b10864378fbd88538434679acf908cc";
6681  temp_map["/neutron/eaf_xs"]="29622c636c4a3a46802207b934f9516c";
6682  temp_map["/neutron/scattering_lengths"]="a24d391cc9dc0fc146392740bb97ead4";
6683  temp_map["/neutron/simple_xs"]="3d6e086977783dcdf07e5c6b0c2416be";
6684  temp_map["/decay"]="4f41f3e46f4306cc44449f08a20922e0";
6685  temp_map["/dose_factors"]="dafa32c24b2303850a0bebdf3e6b122e";
6686  return temp_map;
6687 };
6688 
6689 std::map<std::string, std::string> pyne::data_checksums =
6691 
6692 /*****************************/
6693 /*** atomic_mass Functions ***/
6694 /*****************************/
6695 std::map<int, double> pyne::atomic_mass_map = std::map<int, double>();
6696 
6698  // Loads the important parts of atomic_wight table into atomic_mass_map
6699 
6700  //Check to see if the file is in HDF5 format.
6703 
6704  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
6705  if (!ish5)
6707 
6708  // Get the HDF5 compound type (table) description
6709  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(atomic_mass_data));
6710  H5Tinsert(desc, "nuc", HOFFSET(atomic_mass_data, nuc), H5T_NATIVE_INT);
6711  H5Tinsert(desc, "mass", HOFFSET(atomic_mass_data, mass), H5T_NATIVE_DOUBLE);
6712  H5Tinsert(desc, "error", HOFFSET(atomic_mass_data, error), H5T_NATIVE_DOUBLE);
6713  H5Tinsert(desc, "abund", HOFFSET(atomic_mass_data, abund), H5T_NATIVE_DOUBLE);
6714 
6715  // Open the HDF5 file
6716  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT);
6717 
6718  // Open the data set
6719  hid_t atomic_mass_set = H5Dopen2(nuc_data_h5, "/atomic_mass", H5P_DEFAULT);
6720  hid_t atomic_mass_space = H5Dget_space(atomic_mass_set);
6721  int atomic_mass_length = H5Sget_simple_extent_npoints(atomic_mass_space);
6722 
6723  // Read in the data
6724  atomic_mass_data * atomic_mass_array = new atomic_mass_data[atomic_mass_length];
6725  H5Dread(atomic_mass_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, atomic_mass_array);
6726 
6727  // close the nuc_data library, before doing anything stupid
6728  H5Dclose(atomic_mass_set);
6729  H5Fclose(nuc_data_h5);
6730 
6731  // Ok now that we have the array of structs, put it in the map
6732  for(int n = 0; n < atomic_mass_length; n++) {
6733  atomic_mass_map.insert(std::pair<int, double>(atomic_mass_array[n].nuc, \
6734  atomic_mass_array[n].mass));
6735  natural_abund_map.insert(std::pair<int, double>(atomic_mass_array[n].nuc, \
6736  atomic_mass_array[n].abund));
6737  }
6738 
6739  delete[] atomic_mass_array;
6740 };
6741 
6742 
6743 double pyne::atomic_mass(int nuc) {
6744  // Find the nuclide's mass in AMU
6745  std::map<int, double>::iterator nuc_iter, nuc_end;
6746 
6747  nuc_iter = atomic_mass_map.find(nuc);
6748  nuc_end = atomic_mass_map.end();
6749 
6750  // First check if we already have the nuc mass in the map
6751  if (nuc_iter != nuc_end) {
6752  return (*nuc_iter).second;
6753  }
6754 
6755  // Next, fill up the map with values from the
6756  // nuc_data.h5, if the map is empty.
6757  if (atomic_mass_map.empty()) {
6758  // Don't fail if we can't load the library
6760  return atomic_mass(nuc);
6761  }
6762 
6763  double aw;
6764  int nucid = nucname::id(nuc);
6765 
6766  // If in an excited state, return the ground
6767  // state mass...not strictly true, but good guess.
6768  if (0 < nucid%10000) {
6769  aw = atomic_mass((nucid/10000)*10000);
6770  if (atomic_mass_map.count(nuc) != 1) {
6771  atomic_mass_map.insert(std::pair<int, double>(nuc, aw));
6772  }
6773  return aw;
6774  };
6775 
6776  // Finally, if none of these work,
6777  // take a best guess based on the
6778  // aaa number.
6779  aw = (double) ((nucid/10000)%1000);
6780  if (atomic_mass_map.count(nuc) != 1) {
6781  atomic_mass_map.insert(std::pair<int, double>(nuc, aw));
6782  }
6783  return aw;
6784 };
6785 
6786 
6787 double pyne::atomic_mass(char * nuc) {
6788  int nuc_zz = nucname::id(nuc);
6789  return atomic_mass(nuc_zz);
6790 };
6791 
6792 
6793 double pyne::atomic_mass(std::string nuc) {
6794  int nuc_zz = nucname::id(nuc);
6795  return atomic_mass(nuc_zz);
6796 };
6797 
6798 
6799 /*******************************/
6800 /*** natural_abund functions ***/
6801 /*******************************/
6802 
6803 std::map<int, double> pyne::natural_abund_map = std::map<int, double>();
6804 
6805 double pyne::natural_abund(int nuc) {
6806  // Find the nuclide's natural abundance
6807  std::map<int, double>::iterator nuc_iter, nuc_end;
6808 
6809  nuc_iter = natural_abund_map.find(nuc);
6810  nuc_end = natural_abund_map.end();
6811 
6812  // First check if we already have the nuc mass in the map
6813  if (nuc_iter != nuc_end)
6814  return (*nuc_iter).second;
6815 
6816  // Next, fill up the map with values from the
6817  // nuc_data.h5, if the map is empty.
6818  if (natural_abund_map.empty()) {
6819  // Don't fail if we can't load the library
6821  return natural_abund(nuc);
6822  };
6823 
6824  double na;
6825  int nucid = nucname::id(nuc);
6826 
6827  // If in an excited state, return the ground
6828  // state abundance...not strictly true, but good guess.
6829  if (0 < nucid%10000) {
6830  na = natural_abund((nucid/10000)*10000);
6831  natural_abund_map[nuc] = na;
6832  return na;
6833  };
6834 
6835  // Finally, if none of these work,
6836  // take a best guess based on the
6837  // aaa number.
6838  na = 0.0;
6839  natural_abund_map[nuc] = na;
6840  return na;
6841 };
6842 
6843 
6844 double pyne::natural_abund(char * nuc) {
6845  int nuc_zz = nucname::id(nuc);
6846  return natural_abund(nuc_zz);
6847 };
6848 
6849 
6850 double pyne::natural_abund(std::string nuc) {
6851  int nuc_zz = nucname::id(nuc);
6852  return natural_abund(nuc_zz);
6853 };
6854 
6855 
6856 
6857 /*************************/
6858 /*** Q_value Functions ***/
6859 /*************************/
6860 
6862  // Loads the important parts of q_value table into q_value_map
6863 
6864  //Check to see if the file is in HDF5 format.
6867 
6868  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
6869  if (!ish5)
6871 
6872  // Get the HDF5 compound type (table) description
6873  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(q_val_data));
6874  H5Tinsert(desc, "nuc", HOFFSET(q_val_data, nuc), H5T_NATIVE_INT);
6875  H5Tinsert(desc, "q_val", HOFFSET(q_val_data, q_val), H5T_NATIVE_DOUBLE);
6876  H5Tinsert(desc, "gamma_frac", HOFFSET(q_val_data, gamma_frac), H5T_NATIVE_DOUBLE);
6877 
6878  // Open the HDF5 file
6879  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT);
6880 
6881  // Open the data set
6882  hid_t q_val_set = H5Dopen2(nuc_data_h5, "/decay/q_values", H5P_DEFAULT);
6883  hid_t q_val_space = H5Dget_space(q_val_set);
6884  int q_val_length = H5Sget_simple_extent_npoints(q_val_space);
6885 
6886  // Read in the data
6887  q_val_data * q_val_array = new q_val_data[q_val_length];
6888  H5Dread(q_val_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, q_val_array);
6889 
6890  // close the nuc_data library, before doing anything stupid
6891  H5Dclose(q_val_set);
6892  H5Fclose(nuc_data_h5);
6893 
6894  // Ok now that we have the array of structs, put it in the map
6895  for(int n = 0; n < q_val_length; n++) {
6896  q_val_map[q_val_array[n].nuc] = q_val_array[n].q_val;
6897  gamma_frac_map[q_val_array[n].nuc] = q_val_array[n].gamma_frac;
6898  }
6899 
6900  delete[] q_val_array;
6901 };
6902 
6903 std::map<int, double> pyne::q_val_map = std::map<int, double>();
6904 
6905 double pyne::q_val(int nuc) {
6906  // Find the nuclide's q_val in MeV/fission
6907  std::map<int, double>::iterator nuc_iter, nuc_end;
6908 
6909  nuc_iter = q_val_map.find(nuc);
6910  nuc_end = q_val_map.end();
6911 
6912  // First check if we already have the nuc q_val in the map
6913  if (nuc_iter != nuc_end)
6914  return (*nuc_iter).second;
6915 
6916  // Next, fill up the map with values from the nuc_data.h5 if the map is empty.
6917  if (q_val_map.empty()) {
6918  _load_q_val_map();
6919  return q_val(nuc);
6920  };
6921 
6922  double qv;
6923  int nucid = nucname::id(nuc);
6924  if (nucid != nuc)
6925  return q_val(nucid);
6926 
6927  // If nuclide is not found, return 0
6928  qv = 0.0;
6929  q_val_map[nuc] = qv;
6930  return qv;
6931 };
6932 
6933 
6934 double pyne::q_val(const char * nuc) {
6935  int nuc_zz = nucname::id(nuc);
6936  return q_val(nuc_zz);
6937 };
6938 
6939 
6940 double pyne::q_val(std::string nuc) {
6941  int nuc_zz = nucname::id(nuc);
6942  return q_val(nuc_zz);
6943 };
6944 
6945 
6946 /****************************/
6947 /*** gamma_frac functions ***/
6948 /****************************/
6949 
6950 std::map<int, double> pyne::gamma_frac_map = std::map<int, double>();
6951 
6952 double pyne::gamma_frac(int nuc) {
6953  // Find the nuclide's fraction of Q that comes from gammas
6954  std::map<int, double>::iterator nuc_iter, nuc_end;
6955 
6956  nuc_iter = gamma_frac_map.find(nuc);
6957  nuc_end = gamma_frac_map.end();
6958 
6959  // First check if we already have the gamma_frac in the map
6960  if (nuc_iter != nuc_end)
6961  return (*nuc_iter).second;
6962 
6963  // Next, fill up the map with values from nuc_data.h5 if the map is empty.
6964  if (gamma_frac_map.empty()) {
6965  _load_q_val_map();
6966  return gamma_frac(nuc);
6967  };
6968 
6969  double gf;
6970  int nucid = nucname::id(nuc);
6971  if (nucid != nuc)
6972  return gamma_frac(nucid);
6973 
6974  // If nuclide is not found, return 0
6975  gf = 0.0;
6976  gamma_frac_map[nucid] = gf;
6977  return gf;
6978 };
6979 
6980 
6981 double pyne::gamma_frac(const char * nuc) {
6982  int nuc_zz = nucname::id(nuc);
6983  return gamma_frac(nuc_zz);
6984 };
6985 
6986 
6987 double pyne::gamma_frac(std::string nuc) {
6988  int nuc_zz = nucname::id(nuc);
6989  return gamma_frac(nuc_zz);
6990 };
6991 
6992 
6993 /*****************************/
6994 /*** Dose Factor Functions ***/
6995 /*****************************/
6996 /***************************************************************************
6997 This data is from: [Exposure Scenarios and Unit Dose Factors for the Hanford
6998 Immobilized Low-Activity Tank Waste Performance Assessment, ref.
6999 HNF-SD-WM-TI-707 Rev. 1 December 1999] Appendix O of HNF-5636 [DATA PACKAGES
7000 FOR THE HANFORD IMMOBILIZED LOW-ACTIVITY TANK WASTE PERFORMANCE ASSESSMENT:
7001 2001 VERSION]
7002 
7003 Liability Disclaimer: The PyNE Development Team shall not be liable for any
7004 loss or injury resulting from decisions made with this data.
7005 **************************************************************************/
7006 
7007 void pyne::_load_dose_map(std::map<int, dose>& dm, std::string source_path) {
7008  herr_t status;
7009 
7010  //Check to see if the file is in HDF5 format.
7013 
7014  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
7015  if (!ish5)
7017 
7018  // Defining string type for lung model data
7019  hid_t string_type_;
7020  string_type_ = H5Tcopy(H5T_C_S1);
7021  H5Tset_size(string_type_, 1);
7022  H5Tset_strpad(string_type_, H5T_STR_NULLPAD);
7023 
7024  // Get the HDF5 compound type (table) description
7025  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(dose));
7026  status = H5Tinsert(desc, "nuc", HOFFSET(dose, nuc), H5T_NATIVE_INT);
7027  status = H5Tinsert(desc, "ext_air_dose", HOFFSET(dose, ext_air_dose), H5T_NATIVE_DOUBLE);
7028  status = H5Tinsert(desc, "ratio", HOFFSET(dose, ratio), H5T_NATIVE_DOUBLE);
7029  status = H5Tinsert(desc, "ext_soil_dose", HOFFSET(dose, ext_soil_dose), H5T_NATIVE_DOUBLE);
7030  status = H5Tinsert(desc, "ingest_dose", HOFFSET(dose, ingest_dose), H5T_NATIVE_DOUBLE);
7031  status = H5Tinsert(desc, "fluid_frac", HOFFSET(dose, fluid_frac), H5T_NATIVE_DOUBLE);
7032  status = H5Tinsert(desc, "inhale_dose", HOFFSET(dose, inhale_dose), H5T_NATIVE_DOUBLE);
7033  status = H5Tinsert(desc, "lung_mod", HOFFSET(dose, lung_mod), string_type_);
7034 
7035  // Open the HDF5 file
7036  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT);
7037 
7038  // Convert source_path to proper format for HD5open
7039  const char * c = source_path.c_str();
7040 
7041  // Open the data set
7042  hid_t dose_set = H5Dopen2(nuc_data_h5, c, H5P_DEFAULT);
7043  hid_t dose_space = H5Dget_space(dose_set);
7044  int dose_length = H5Sget_simple_extent_npoints(dose_space);
7045 
7046  // Read in the data
7047  dose * dose_array = new dose[dose_length];
7048  H5Dread(dose_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, dose_array);
7049 
7050  // Put array of structs in the map
7051  for (int n = 0; n < dose_length; n++) {
7052  dm[dose_array[n].nuc] = dose_array[n];
7053  };
7054 
7055  // Close the nuc_data library
7056  H5Dclose(dose_set);
7057  H5Tclose(string_type_);
7058  H5Fclose(nuc_data_h5);
7059 
7060  delete[] dose_array;
7061 };
7062 
7063 ///
7064 /// Functions for Source Location in nuc_data.h5
7065 /// and related Map Pointers
7066 ///
7067 
7068 std::string source_string(int source) {
7069  std::string source_location;
7070  if (source == 1) {
7071  source_location = "/dose_factors/DOE";
7072  } else if (source == 2) {
7073  source_location = "/dose_factors/GENII";
7074  } else {
7075  source_location = "/dose_factors/EPA";
7076  }
7077  return source_location;
7078 };
7079 
7080 std::map<int, pyne::dose>& dose_source_map(int source) {
7081  std::map<int, pyne::dose>* dm;
7082  if (source == 1) {
7083  dm = &pyne::doe_dose_map;
7084  } else if (source == 2) {
7085  dm = &pyne::genii_dose_map;
7086  } else {
7087  dm = &pyne::epa_dose_map;
7088  }
7089  if (dm->empty()) {
7090  std::string source_path = source_string(source);
7091  _load_dose_map(*dm, source_path);
7092  }
7093  return *dm;
7094 };
7095 
7096 std::map<int, pyne::dose> pyne::epa_dose_map;
7097 std::map<int, pyne::dose> pyne::doe_dose_map;
7098 std::map<int, pyne::dose> pyne::genii_dose_map;
7099 
7100 ///
7101 /// Functions for External Air and
7102 /// Ratio of External Air to Inhalation Dose Factors
7103 ///
7104 
7105 /// External Air
7106 double pyne::ext_air_dose(int nuc, int source) {
7107  std::map<int, pyne::dose>& dm = dose_source_map(source);
7108  int nucid = nucname::id(nuc);
7109 
7110  if (dm.count(nucid)==1) {
7111  return dm[nucid].ext_air_dose;
7112  } else {
7113  return -1;
7114  }
7115 };
7116 
7117 double pyne::ext_air_dose(const char * nuc, int source) {
7118  int nuc_zz = nucname::id(nuc);
7119  return ext_air_dose(nuc_zz, source);
7120 };
7121 
7122 
7123 double pyne::ext_air_dose(std::string nuc, int source) {
7124  int nuc_zz = nucname::id(nuc);
7125  return ext_air_dose(nuc_zz, source);
7126 };
7127 
7128 /// Dose Ratio
7129 double pyne::dose_ratio(int nuc, int source) {
7130  std::map<int, pyne::dose>& dm = dose_source_map(source);
7131  int nucid = nucname::id(nuc);
7132 
7133  if (dm.count(nucid)==1) {
7134  return dm[nucid].ratio;
7135  } else {
7136  return -1;
7137  }
7138 };
7139 
7140 double pyne::dose_ratio(const char * nuc, int source) {
7141  int nuc_zz = nucname::id(nuc);
7142  return dose_ratio(nuc_zz, source);
7143 };
7144 
7145 
7146 double pyne::dose_ratio(std::string nuc, int source) {
7147  int nuc_zz = nucname::id(nuc);
7148  return dose_ratio(nuc_zz, source);
7149 };
7150 
7151 ///
7152 /// Function for External Soil Dose Factors
7153 ///
7154 
7155 double pyne::ext_soil_dose(int nuc, int source) {
7156  std::map<int, pyne::dose>& dm = dose_source_map(source);
7157  int nucid = nucname::id(nuc);
7158 
7159  if (dm.count(nucid)==1) {
7160  return dm[nucid].ext_soil_dose;
7161  } else {
7162  return -1;
7163  }
7164 };
7165 
7166 double pyne::ext_soil_dose(const char * nuc, int source) {
7167  int nuc_zz = nucname::id(nuc);
7168  return ext_soil_dose(nuc_zz, source);
7169 };
7170 
7171 
7172 double pyne::ext_soil_dose(std::string nuc, int source) {
7173  int nuc_zz = nucname::id(nuc);
7174  return ext_soil_dose(nuc_zz, source);
7175 };
7176 
7177 ///
7178 /// Functions for Ingestion Dose Factors and
7179 /// Fraction of activity that is absorbed by body fluids
7180 ///
7181 
7182 /// Ingestion
7183 double pyne::ingest_dose(int nuc, int source) {
7184  std::map<int, pyne::dose>& dm = dose_source_map(source);
7185  int nucid = nucname::id(nuc);
7186 
7187  if (dm.count(nucid)==1) {
7188  return dm[nucid].ingest_dose;
7189  } else {
7190  return -1;
7191  }
7192 };
7193 
7194 double pyne::ingest_dose(const char * nuc, int source) {
7195  int nuc_zz = nucname::id(nuc);
7196  return ingest_dose(nuc_zz, source);
7197 };
7198 
7199 
7200 double pyne::ingest_dose(std::string nuc, int source) {
7201  int nuc_zz = nucname::id(nuc);
7202  return ingest_dose(nuc_zz, source);
7203 };
7204 
7205 /// Fluid Fraction
7206 double pyne::dose_fluid_frac(int nuc, int source) {
7207  std::map<int, pyne::dose>& dm = dose_source_map(source);
7208  int nucid = nucname::id(nuc);
7209 
7210  if (dm.count(nucid)==1) {
7211  return dm[nucid].fluid_frac;
7212  } else {
7213  return -1;
7214  }
7215 };
7216 
7217 double pyne::dose_fluid_frac(const char * nuc, int source) {
7218  int nuc_zz = nucname::id(nuc);
7219  return dose_fluid_frac(nuc_zz, source);
7220 };
7221 
7222 
7223 double pyne::dose_fluid_frac(std::string nuc, int source) {
7224  int nuc_zz = nucname::id(nuc);
7225  return dose_fluid_frac(nuc_zz, source);
7226 };
7227 
7228 ///
7229 /// Functions for Inhalation Dose Factors and
7230 /// Lung Model used to obtain dose factors
7231 ///
7232 
7233 /// Inhalation
7234 double pyne::inhale_dose(int nuc, int source) {
7235  std::map<int, pyne::dose>& dm = dose_source_map(source);
7236  int nucid = nucname::id(nuc);
7237 
7238  if (dm.count(nucid)==1) {
7239  return dm[nucid].inhale_dose;
7240  } else {
7241  return -1;
7242  }
7243 };
7244 
7245 double pyne::inhale_dose(const char * nuc, int source) {
7246  int nuc_zz = nucname::id(nuc);
7247  return inhale_dose(nuc_zz, source);
7248 };
7249 
7250 
7251 double pyne::inhale_dose(std::string nuc, int source) {
7252  int nuc_zz = nucname::id(nuc);
7253  return inhale_dose(nuc_zz, source);
7254 };
7255 
7256 /// Lung Model
7257 std::string pyne::dose_lung_model(int nuc, int source) {
7258  std::map<int, pyne::dose>& dm = dose_source_map(source);
7259  int nucid = nucname::id(nuc);
7260 
7261  if (dm.count(nucid)==1) {
7262  return std::string(1, dm[nucid].lung_mod);
7263  } else {
7264  return "Nada";
7265  }
7266 };
7267 
7268 std::string pyne::dose_lung_model(const char * nuc, int source) {
7269  int nuc_zz = nucname::id(nuc);
7270  return dose_lung_model(nuc_zz, source);
7271 };
7272 
7273 
7274 std::string pyne::dose_lung_model(std::string nuc, int source) {
7275  int nuc_zz = nucname::id(nuc);
7276  return dose_lung_model(nuc_zz, source);
7277 };
7278 
7279 
7280 /***********************************/
7281 /*** scattering length functions ***/
7282 /***********************************/
7283 std::map<int, xd_complex_t> pyne::b_coherent_map = std::map<int, xd_complex_t>();
7284 std::map<int, xd_complex_t> pyne::b_incoherent_map = std::map<int, xd_complex_t>();
7285 std::map<int, double> pyne::b_map = std::map<int, double>();
7286 
7287 
7289  // Loads the important parts of atomic_wight table into atomic_mass_map
7290  herr_t status;
7291 
7292  //Check to see if the file is in HDF5 format.
7295 
7296  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
7297  if (!ish5)
7299 
7300  // Get the HDF5 compound type (table) description
7301  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(scattering_lengths));
7302  status = H5Tinsert(desc, "nuc", HOFFSET(scattering_lengths, nuc), H5T_NATIVE_INT);
7303  status = H5Tinsert(desc, "b_coherent", HOFFSET(scattering_lengths, b_coherent),
7305  status = H5Tinsert(desc, "b_incoherent", HOFFSET(scattering_lengths, b_incoherent),
7307  status = H5Tinsert(desc, "xs_coherent", HOFFSET(scattering_lengths, xs_coherent),
7308  H5T_NATIVE_DOUBLE);
7309  status = H5Tinsert(desc, "xs_incoherent", HOFFSET(scattering_lengths, xs_incoherent),
7310  H5T_NATIVE_DOUBLE);
7311  status = H5Tinsert(desc, "xs", HOFFSET(scattering_lengths, xs), H5T_NATIVE_DOUBLE);
7312 
7313  // Open the HDF5 file
7314  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT);
7315 
7316  // Open the data set
7317  hid_t scat_len_set = H5Dopen2(nuc_data_h5, "/neutron/scattering_lengths", H5P_DEFAULT);
7318  hid_t scat_len_space = H5Dget_space(scat_len_set);
7319  int scat_len_length = H5Sget_simple_extent_npoints(scat_len_space);
7320 
7321  // Read in the data
7322  scattering_lengths * scat_len_array = new scattering_lengths[scat_len_length];
7323  status = H5Dread(scat_len_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, scat_len_array);
7324 
7325  // close the nuc_data library, before doing anything stupid
7326  status = H5Dclose(scat_len_set);
7327  status = H5Fclose(nuc_data_h5);
7328 
7329  // Ok now that we have the array of stucts, put it in the maps
7330  for(int n = 0; n < scat_len_length; n++) {
7331  b_coherent_map[scat_len_array[n].nuc] = scat_len_array[n].b_coherent;
7332  b_incoherent_map[scat_len_array[n].nuc] = scat_len_array[n].b_incoherent;
7333  };
7334 
7335  delete[] scat_len_array;
7336 };
7337 
7338 
7339 
7340 //
7341 // Coherent functions
7342 //
7343 
7344 
7346  // Find the nuclide's bound scattering length in cm
7347  std::map<int, xd_complex_t>::iterator nuc_iter, nuc_end;
7348 
7349  nuc_iter = b_coherent_map.find(nuc);
7350  nuc_end = b_coherent_map.end();
7351 
7352  // First check if we already have the nuc in the map
7353  if (nuc_iter != nuc_end)
7354  return (*nuc_iter).second;
7355 
7356  // Next, fill up the map with values from the
7357  // nuc_data.h5, if the map is empty.
7358  if (b_coherent_map.empty()) {
7360  return b_coherent(nuc);
7361  };
7362 
7363  xd_complex_t bc;
7364  int nucid = nucname::id(nuc);
7365  int znum = nucname::znum(nucid);
7366  int anum = nucname::anum(nucid);
7367 
7368  // Try to find a nuclide with matching A-number
7369  nuc_iter = b_coherent_map.begin();
7370  while (nuc_iter != nuc_end) {
7371  if (anum == nucname::anum((*nuc_iter).first)) {
7372  bc = (*nuc_iter).second;
7373  b_coherent_map[nuc] = bc;
7374  return bc;
7375  };
7376  nuc_iter++;
7377  };
7378 
7379  // Try to find a nuclide with matching Z-number
7380  nuc_iter = b_coherent_map.begin();
7381  while (nuc_iter != nuc_end) {
7382  if (znum == nucname::znum((*nuc_iter).first)) {
7383  bc = (*nuc_iter).second;
7384  b_coherent_map[nuc] = bc;
7385  return bc;
7386  };
7387  nuc_iter++;
7388  };
7389 
7390  // Finally, if none of these work,
7391  // just return zero...
7392  bc.re = 0.0;
7393  bc.im = 0.0;
7394  b_coherent_map[nuc] = bc;
7395  return bc;
7396 };
7397 
7398 
7400  int nuc_zz = nucname::id(nuc);
7401  return b_coherent(nuc_zz);
7402 };
7403 
7404 
7405 xd_complex_t pyne::b_coherent(std::string nuc) {
7406  int nuc_zz = nucname::id(nuc);
7407  return b_coherent(nuc_zz);
7408 };
7409 
7410 
7411 
7412 //
7413 // Incoherent functions
7414 //
7415 
7416 
7418  // Find the nuclide's bound inchoherent scattering length in cm
7419  std::map<int, xd_complex_t>::iterator nuc_iter, nuc_end;
7420 
7421  nuc_iter = b_incoherent_map.find(nuc);
7422  nuc_end = b_incoherent_map.end();
7423 
7424  // First check if we already have the nuc in the map
7425  if (nuc_iter != nuc_end)
7426  return (*nuc_iter).second;
7427 
7428  // Next, fill up the map with values from the
7429  // nuc_data.h5, if the map is empty.
7430  if (b_incoherent_map.empty()) {
7432  return b_incoherent(nuc);
7433  };
7434 
7435  xd_complex_t bi;
7436  int nucid = nucname::id(nuc);
7437  int znum = nucname::znum(nucid);
7438  int anum = nucname::anum(nucid);
7439 
7440  // Try to find a nuclide with matching A-number
7441  nuc_iter = b_incoherent_map.begin();
7442  while (nuc_iter != nuc_end) {
7443  if (anum == nucname::anum((*nuc_iter).first)) {
7444  bi = (*nuc_iter).second;
7445  b_incoherent_map[nuc] = bi;
7446  return bi;
7447  };
7448  nuc_iter++;
7449  };
7450 
7451  // Try to find a nuclide with matching Z-number
7452  nuc_iter = b_incoherent_map.begin();
7453  while (nuc_iter != nuc_end) {
7454  if (znum == nucname::znum((*nuc_iter).first)) {
7455  bi = (*nuc_iter).second;
7456  b_incoherent_map[nuc] = bi;
7457  return bi;
7458  };
7459  nuc_iter++;
7460  };
7461 
7462  // Finally, if none of these work,
7463  // just return zero...
7464  bi.re = 0.0;
7465  bi.im = 0.0;
7466  b_incoherent_map[nuc] = bi;
7467  return bi;
7468 };
7469 
7470 
7472  return b_incoherent(nucname::id(nuc));
7473 };
7474 
7475 
7477  return b_incoherent(nucname::id(nuc));
7478 };
7479 
7480 
7481 
7482 //
7483 // b functions
7484 //
7485 
7486 double pyne::b(int nuc) {
7487  // Find the nuclide's bound scattering length in cm
7488  std::map<int, double>::iterator nuc_iter, nuc_end;
7489 
7490  nuc_iter = b_map.find(nuc);
7491  nuc_end = b_map.end();
7492 
7493  // First check if we already have the nuc in the map
7494  if (nuc_iter != nuc_end)
7495  return (*nuc_iter).second;
7496 
7497  // Next, calculate the value from coherent and incoherent lengths
7498  xd_complex_t bc = b_coherent(nuc);
7499  xd_complex_t bi = b_incoherent(nuc);
7500 
7501  double b_val = sqrt(bc.re*bc.re + bc.im*bc.im + bi.re*bi.re + bi.im*bi.im);
7502 
7503  return b_val;
7504 };
7505 
7506 
7507 double pyne::b(char * nuc) {
7508  int nucid = nucname::id(nuc);
7509  return b(nucid);
7510 };
7511 
7512 
7513 double pyne::b(std::string nuc) {
7514  int nucid = nucname::id(nuc);
7515  return b(nucid);
7516 };
7517 
7518 
7519 
7520 //
7521 // Fission Product Yield Data
7522 //
7523 std::map<std::pair<int, int>, double> pyne::wimsdfpy_data = \
7524  std::map<std::pair<int, int>, double>();
7525 
7527  herr_t status;
7528 
7529  //Check to see if the file is in HDF5 format.
7532 
7533  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
7534  if (!ish5)
7536 
7537  // Get the HDF5 compound type (table) description
7538  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(wimsdfpy));
7539  status = H5Tinsert(desc, "from_nuc", HOFFSET(wimsdfpy, from_nuc),
7540  H5T_NATIVE_INT);
7541  status = H5Tinsert(desc, "to_nuc", HOFFSET(wimsdfpy, to_nuc),
7542  H5T_NATIVE_INT);
7543  status = H5Tinsert(desc, "yields", HOFFSET(wimsdfpy, yields),
7544  H5T_NATIVE_DOUBLE);
7545 
7546  // Open the HDF5 file
7547  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
7548  H5P_DEFAULT);
7549 
7550  // Open the data set
7551  hid_t wimsdfpy_set = H5Dopen2(nuc_data_h5, "/neutron/wimsd_fission_products",
7552  H5P_DEFAULT);
7553  hid_t wimsdfpy_space = H5Dget_space(wimsdfpy_set);
7554  int wimsdfpy_length = H5Sget_simple_extent_npoints(wimsdfpy_space);
7555 
7556  // Read in the data
7557  wimsdfpy * wimsdfpy_array = new wimsdfpy[wimsdfpy_length];
7558  status = H5Dread(wimsdfpy_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, wimsdfpy_array);
7559 
7560  // close the nuc_data library, before doing anything stupid
7561  status = H5Dclose(wimsdfpy_set);
7562  status = H5Fclose(nuc_data_h5);
7563 
7564  // Ok now that we have the array of stucts, put it in the maps
7565  for(int n=0; n < wimsdfpy_length; n++) {
7566  wimsdfpy_data[std::make_pair(wimsdfpy_array[n].from_nuc,
7567  wimsdfpy_array[n].to_nuc)] = wimsdfpy_array[n].yields;
7568  };
7569 
7570  delete[] wimsdfpy_array;
7571 };
7572 
7573 
7574 std::map<std::pair<int, int>, pyne::ndsfpysub> pyne::ndsfpy_data = \
7575  std::map<std::pair<int, int>, pyne::ndsfpysub>();
7576 
7578  herr_t status;
7579 
7580  //Check to see if the file is in HDF5 format.
7583 
7584  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
7585  if (!ish5)
7587 
7588  // Get the HDF5 compound type (table) description
7589  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(ndsfpy));
7590  status = H5Tinsert(desc, "from_nuc", HOFFSET(ndsfpy, from_nuc),
7591  H5T_NATIVE_INT);
7592  status = H5Tinsert(desc, "to_nuc", HOFFSET(ndsfpy, to_nuc),
7593  H5T_NATIVE_INT);
7594  status = H5Tinsert(desc, "yield_thermal", HOFFSET(ndsfpy, yield_thermal),
7595  H5T_NATIVE_DOUBLE);
7596  status = H5Tinsert(desc, "yield_thermal_err", HOFFSET(ndsfpy, yield_thermal_err),
7597  H5T_NATIVE_DOUBLE);
7598  status = H5Tinsert(desc, "yield_fast", HOFFSET(ndsfpy, yield_fast),
7599  H5T_NATIVE_DOUBLE);
7600  status = H5Tinsert(desc, "yield_fast_err", HOFFSET(ndsfpy, yield_fast_err),
7601  H5T_NATIVE_DOUBLE);
7602  status = H5Tinsert(desc, "yield_14MeV", HOFFSET(ndsfpy, yield_14MeV),
7603  H5T_NATIVE_DOUBLE);
7604  status = H5Tinsert(desc, "yield_14MeV_err", HOFFSET(ndsfpy, yield_14MeV_err),
7605  H5T_NATIVE_DOUBLE);
7606 
7607  // Open the HDF5 file
7608  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
7609  H5P_DEFAULT);
7610 
7611  // Open the data set
7612  hid_t ndsfpy_set = H5Dopen2(nuc_data_h5, "/neutron/nds_fission_products",
7613  H5P_DEFAULT);
7614  hid_t ndsfpy_space = H5Dget_space(ndsfpy_set);
7615  int ndsfpy_length = H5Sget_simple_extent_npoints(ndsfpy_space);
7616 
7617  // Read in the data
7618  ndsfpy * ndsfpy_array = new ndsfpy[ndsfpy_length];
7619  status = H5Dread(ndsfpy_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, ndsfpy_array);
7620 
7621  // close the nuc_data library, before doing anything stupid
7622  status = H5Dclose(ndsfpy_set);
7623  status = H5Fclose(nuc_data_h5);
7624 
7625  ndsfpysub ndsfpysub_temp;
7626 
7627  // Ok now that we have the array of structs, put it in the maps
7628  for(int n=0; n < ndsfpy_length; n++) {
7629  ndsfpysub_temp.yield_thermal = ndsfpy_array[n].yield_thermal;
7630  ndsfpysub_temp.yield_thermal_err = ndsfpy_array[n].yield_thermal_err;
7631  ndsfpysub_temp.yield_fast = ndsfpy_array[n].yield_fast;
7632  ndsfpysub_temp.yield_fast_err = ndsfpy_array[n].yield_fast_err;
7633  ndsfpysub_temp.yield_14MeV = ndsfpy_array[n].yield_14MeV;
7634  ndsfpysub_temp.yield_14MeV_err = ndsfpy_array[n].yield_14MeV_err;
7635  ndsfpy_data[std::make_pair(ndsfpy_array[n].from_nuc,
7636  ndsfpy_array[n].to_nuc)] = ndsfpysub_temp;
7637  };
7638 
7639 
7640 
7641  delete[] ndsfpy_array;
7642 };
7643 
7644 double pyne::fpyield(std::pair<int, int> from_to, int source, bool get_error) {
7645  // Note that this may be expanded eventually to include other
7646  // sources of fission product data.
7647 
7648  // Find the parent/child pair branch ratio as a fraction
7649  if (source == 0) {
7650  std::map<std::pair<int, int>, double>::iterator fpy_iter, fpy_end;
7651  fpy_iter = wimsdfpy_data.find(from_to);
7652  fpy_end = wimsdfpy_data.end();
7653  if (fpy_iter != fpy_end)
7654  //if (get_error == true) return 0;
7655  return (*fpy_iter).second;
7656  } else {
7657  std::map<std::pair<int, int>, ndsfpysub>::iterator fpy_iter, fpy_end;
7658  fpy_iter = ndsfpy_data.find(from_to);
7659  fpy_end = ndsfpy_data.end();
7660  if (fpy_iter != fpy_end) {
7661  switch (source) {
7662  case 1:
7663  if (get_error)
7664  return (*fpy_iter).second.yield_thermal_err;
7665  return (*fpy_iter).second.yield_thermal;
7666  break;
7667  case 2:
7668  if (get_error)
7669  return (*fpy_iter).second.yield_fast_err;
7670  return (*fpy_iter).second.yield_fast;
7671  break;
7672  case 3:
7673  if (get_error)
7674  return (*fpy_iter).second.yield_14MeV_err;
7675  return (*fpy_iter).second.yield_14MeV;
7676  break;
7677  }
7678  }
7679  }
7680 
7681 
7682  // Next, fill up the map with values from the
7683  // nuc_data.h5, if the map is empty.
7684  if ((source == 0 ) && (wimsdfpy_data.empty())) {
7685  _load_wimsdfpy();
7686  return fpyield(from_to, 0, get_error);
7687  }else if (ndsfpy_data.empty()) {
7688  _load_ndsfpy();
7689  return fpyield(from_to, source, get_error);
7690  }
7691 
7692  // Finally, if none of these work,
7693  // assume the value is stable
7694  double fpy = 0.0;
7695  wimsdfpy_data[from_to] = fpy;
7696  return fpy;
7697 };
7698 
7699 double pyne::fpyield(int from_nuc, int to_nuc, int source, bool get_error) {
7700  return fpyield(std::pair<int, int>(nucname::id(from_nuc),
7701  nucname::id(to_nuc)), source, get_error);
7702 };
7703 
7704 double pyne::fpyield(char * from_nuc, char * to_nuc, int source, bool get_error) {
7705  return fpyield(std::pair<int, int>(nucname::id(from_nuc),
7706  nucname::id(to_nuc)), source, get_error);
7707 };
7708 
7709 double pyne::fpyield(std::string from_nuc, std::string to_nuc, int source,
7710  bool get_error) {
7711  return fpyield(std::pair<int, int>(nucname::id(from_nuc),
7712  nucname::id(to_nuc)), source, get_error);
7713 };
7714 
7715 
7716 /***********************/
7717 /*** decay functions ***/
7718 /***********************/
7719 
7720 //
7721 // Data access tools
7722 //
7723 
7724 bool pyne::swapmapcompare::operator()(const std::pair<int, double>& lhs,
7725 const std::pair<int, double>& rhs) const {
7726  return lhs.second<rhs.second || (!(rhs.second<lhs.second) &&
7727  lhs.first<rhs.first);
7728 };
7729 
7730 template<typename T, typename U> std::vector<T> pyne::data_access(
7731 double energy_min, double energy_max, size_t valoffset, std::map<std::pair<int,
7732 double>, U> &data) {
7733  typename std::map<std::pair<int, double>, U, swapmapcompare>::iterator
7734  nuc_iter, nuc_end, it;
7735  std::map<std::pair<int, double>, U, swapmapcompare> dc(data.begin(),
7736  data.end());
7737  std::vector<T> result;
7738  if (energy_max < energy_min){
7739  double temp = energy_max;
7740  energy_max = energy_min;
7741  energy_min = temp;
7742  }
7743  nuc_iter = dc.lower_bound(std::make_pair(0, energy_min));
7744  nuc_end = dc.upper_bound(std::make_pair(9999999999, energy_max));
7745  T *ret;
7746  // First check if we already have the nuc in the map
7747  for (it = nuc_iter; it!= nuc_end; ++it){
7748  ret = (T *)((char *)&(it->second) + valoffset);
7749  result.push_back(*ret);
7750  }
7751  // Next, fill up the map with values from the
7752  // nuc_data.h5, if the map is empty.
7753  if (data.empty())
7754  {
7755  _load_data<U>();
7756  return data_access<T, U>(energy_min, energy_max, valoffset, data);
7757  };
7758  return result;
7759 };
7760 
7761 template<typename T, typename U> std::vector<T> pyne::data_access(int parent,
7762 double min, double max, size_t valoffset,
7763 std::map<std::pair<int, double>, U> &data) {
7764  typename std::map<std::pair<int, double>, U>::iterator nuc_iter, nuc_end, it;
7765  std::vector<T> result;
7766  nuc_iter = data.lower_bound(std::make_pair(parent,min));
7767  nuc_end = data.upper_bound(std::make_pair(parent,max));
7768  T *ret;
7769  // First check if we already have the nuc in the map
7770  for (it = nuc_iter; it!= nuc_end; ++it){
7771  ret = (T *)((char *)&(it->second) + valoffset);
7772  result.push_back(*ret);
7773  }
7774  // Next, fill up the map with values from the
7775  // nuc_data.h5, if the map is empty.
7776  if (data.empty())
7777  {
7778  _load_data<U>();
7779  return data_access<T, U>(parent, min, max, valoffset, data);
7780  };
7781  return result;
7782 };
7783 
7784 template<typename T, typename U> T pyne::data_access(std::pair<int, int>
7785 from_to, size_t valoffset, std::map<std::pair<int, int>, U> &data) {
7786  typename std::map<std::pair<int, int>, U>::iterator nuc_iter, nuc_end;
7787 
7788  nuc_iter = data.find(from_to);
7789  nuc_end = data.end();
7790  T *ret;
7791  // First check if we already have the nuc in the map
7792  if (nuc_iter != nuc_end){
7793  ret = (T *)((char *)&(nuc_iter->second) + valoffset);
7794  return *ret;
7795  }
7796  // Next, fill up the map with values from the
7797  // nuc_data.h5, if the map is empty.
7798  if (data.empty())
7799  {
7800  _load_data<U>();
7801  return data_access<T, U>(from_to, valoffset, data);
7802  };
7803  // This is okay for now because we only return ints and doubles
7804  return 0;
7805 }
7806 
7807 template<typename T, typename U> std::vector<T> pyne::data_access(int parent,
7808 size_t valoffset, std::map<std::pair<int, int>, U> &data){
7809  typename std::map<std::pair<int, int>, U>::iterator nuc_iter, nuc_end, it;
7810  std::vector<T> result;
7811  nuc_iter = data.lower_bound(std::make_pair(parent,0));
7812  nuc_end = data.upper_bound(std::make_pair(parent,9999999999));
7813  T *ret;
7814  // First check if we already have the nuc in the map
7815  for (it = nuc_iter; it!= nuc_end; ++it){
7816  ret = (T *)((char *)&(it->second) + valoffset);
7817  result.push_back(*ret);
7818  }
7819  // Next, fill up the map with values from the
7820  // nuc_data.h5, if the map is empty.
7821  if (data.empty())
7822  {
7823  _load_data<U>();
7824  return data_access<T, U>(parent, valoffset, data);
7825  };
7826  return result;
7827 };
7828 
7829 template<typename T, typename U> std::vector<T> pyne::data_access(int parent,
7830 size_t valoffset, std::map<std::pair<int, unsigned int>, U> &data){
7831  typename std::map<std::pair<int, unsigned int>, U>::iterator nuc_iter,
7832  nuc_end, it;
7833  std::vector<T> result;
7834  nuc_iter = data.lower_bound(std::make_pair(parent,0));
7835  nuc_end = data.upper_bound(std::make_pair(parent,UINT_MAX));
7836  T *ret;
7837  // First check if we already have the nuc in the map
7838  for (it = nuc_iter; it!= nuc_end; ++it){
7839  ret = (T *)((char *)&(it->second) + valoffset);
7840  result.push_back(*ret);
7841  }
7842  // Next, fill up the map with values from the
7843  // nuc_data.h5, if the map is empty.
7844  if (data.empty())
7845  {
7846  _load_data<U>();
7847  return data_access<T, U>(parent, valoffset, data);
7848  };
7849  return result;
7850 };
7851 
7852 template<typename U> double pyne::data_access(int nuc,
7853 size_t valoffset, std::map<int, U> &data){
7854  typename std::map<int, U>::iterator nuc_iter,
7855  nuc_end;
7856  nuc_iter = data.find(nuc);
7857  nuc_end = data.end();
7858  // First check if we already have the nuc in the map
7859  if (nuc_iter != nuc_end){
7860  return *(double *)((char *)&(nuc_iter->second) + valoffset);
7861  }
7862  // Next, fill up the map with values from the
7863  // nuc_data.h5, if the map is empty.
7864  if (data.empty())
7865  {
7866  _load_data<U>();
7867  return data_access<U>(nuc, valoffset, data);
7868  };
7869  throw pyne::nucname::NotANuclide(nuc, "");
7870 };
7871 
7872 
7873 //
7874 // Load atomic data
7875 //
7876 
7877 std::map<int, pyne::atomic> pyne::atomic_data_map;
7878 
7879 template<> void pyne::_load_data<pyne::atomic>() {
7880  // Loads the atomic table into memory
7881  herr_t status;
7882 
7883  //Check to see if the file is in HDF5 format.
7886 
7887  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
7888  if (!ish5)
7890 
7891  // Get the HDF5 compound type (table) description
7892  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(atomic));
7893  status = H5Tinsert(desc, "z", HOFFSET(atomic, z),
7894  H5T_NATIVE_INT);
7895  status = H5Tinsert(desc, "k_shell_fluor", HOFFSET(atomic, k_shell_fluor),
7896  H5T_NATIVE_DOUBLE);
7897  status = H5Tinsert(desc, "k_shell_fluor_error", HOFFSET(atomic, k_shell_fluor_error),
7898  H5T_NATIVE_DOUBLE);
7899  status = H5Tinsert(desc, "l_shell_fluor", HOFFSET(atomic, l_shell_fluor),
7900  H5T_NATIVE_DOUBLE);
7901  status = H5Tinsert(desc, "l_shell_fluor_error", HOFFSET(atomic, l_shell_fluor_error),
7902  H5T_NATIVE_DOUBLE);
7903  status = H5Tinsert(desc, "prob", HOFFSET(atomic, prob),
7904  H5T_NATIVE_DOUBLE);
7905  status = H5Tinsert(desc, "k_shell_be", HOFFSET(atomic, k_shell_be),
7906  H5T_NATIVE_DOUBLE);
7907  status = H5Tinsert(desc, "k_shell_be_err", HOFFSET(atomic, k_shell_be_err),
7908  H5T_NATIVE_DOUBLE);
7909  status = H5Tinsert(desc, "li_shell_be", HOFFSET(atomic, li_shell_be),
7910  H5T_NATIVE_DOUBLE);
7911  status = H5Tinsert(desc, "li_shell_be_err", HOFFSET(atomic, li_shell_be_err),
7912  H5T_NATIVE_DOUBLE);
7913  status = H5Tinsert(desc, "mi_shell_be", HOFFSET(atomic, mi_shell_be),
7914  H5T_NATIVE_DOUBLE);
7915  status = H5Tinsert(desc, "mi_shell_be_err", HOFFSET(atomic, mi_shell_be_err),
7916  H5T_NATIVE_DOUBLE);
7917  status = H5Tinsert(desc, "ni_shell_be", HOFFSET(atomic, ni_shell_be),
7918  H5T_NATIVE_DOUBLE);
7919  status = H5Tinsert(desc, "ni_shell_be_err", HOFFSET(atomic, ni_shell_be_err),
7920  H5T_NATIVE_DOUBLE);
7921  status = H5Tinsert(desc, "kb_to_ka", HOFFSET(atomic, kb_to_ka),
7922  H5T_NATIVE_DOUBLE);
7923  status = H5Tinsert(desc, "kb_to_ka_err", HOFFSET(atomic, kb_to_ka_err),
7924  H5T_NATIVE_DOUBLE);
7925  status = H5Tinsert(desc, "ka2_to_ka1", HOFFSET(atomic, ka2_to_ka1),
7926  H5T_NATIVE_DOUBLE);
7927  status = H5Tinsert(desc, "ka2_to_ka1_err", HOFFSET(atomic, ka2_to_ka1_err),
7928  H5T_NATIVE_DOUBLE);
7929  status = H5Tinsert(desc, "l_auger", HOFFSET(atomic, l_auger),
7930  H5T_NATIVE_DOUBLE);
7931  status = H5Tinsert(desc, "k_auger", HOFFSET(atomic, k_auger),
7932  H5T_NATIVE_DOUBLE);
7933  status = H5Tinsert(desc, "ka1_x_ray_en", HOFFSET(atomic, ka1_x_ray_en),
7934  H5T_NATIVE_DOUBLE);
7935  status = H5Tinsert(desc, "ka1_x_ray_en_err", HOFFSET(atomic, ka1_x_ray_en_err),
7936  H5T_NATIVE_DOUBLE);
7937  status = H5Tinsert(desc, "ka2_x_ray_en", HOFFSET(atomic, ka2_x_ray_en),
7938  H5T_NATIVE_DOUBLE);
7939  status = H5Tinsert(desc, "ka2_x_ray_en_err", HOFFSET(atomic, ka2_x_ray_en_err),
7940  H5T_NATIVE_DOUBLE);
7941  status = H5Tinsert(desc, "kb_x_ray_en", HOFFSET(atomic, kb_x_ray_en),
7942  H5T_NATIVE_DOUBLE);
7943  status = H5Tinsert(desc, "l_x_ray_en", HOFFSET(atomic, l_x_ray_en),
7944  H5T_NATIVE_DOUBLE);
7945 
7946  // Open the HDF5 file
7947  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
7948  H5P_DEFAULT);
7949  // Open the data set
7950  hid_t atomic_set = H5Dopen2(nuc_data_h5, "/decay/atomic", H5P_DEFAULT);
7951  hid_t atomic_space = H5Dget_space(atomic_set);
7952  int atomic_length = H5Sget_simple_extent_npoints(atomic_space);
7953 
7954  // Read in the data
7955  atomic * atomic_array = new atomic[atomic_length];
7956  status = H5Dread(atomic_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT,
7957  atomic_array);
7958 
7959  // close the nuc_data library, before doing anything stupid
7960  status = H5Dclose(atomic_set);
7961  status = H5Fclose(nuc_data_h5);
7962 
7963  for (int i = 0; i < atomic_length; ++i) {
7964  atomic_data_map[atomic_array[i].z] = atomic_array[i];
7965  }
7966 
7967  delete[] atomic_array;
7968 
7969 }
7970 
7971 std::vector<std::pair<double, double> >
7972  pyne::calculate_xray_data(int z, double k_conv, double l_conv) {
7973  double xk = 0;
7974  double xka = 0;
7975  double xka1 = 0;
7976  double xka2 = 0;
7977  double xkb = 0;
7978  double xl = 0;
7979  if (!isnan(k_conv)) {
7980  xk = data_access<atomic> (z, offsetof(atomic, k_shell_fluor),
7981  atomic_data_map)*k_conv;
7982  xka = xk / (1.0 + data_access<atomic> (z, offsetof(atomic,
7983  kb_to_ka), atomic_data_map));
7984  xka1 = xka / (1.0 + data_access<atomic> (z, offsetof(atomic,
7985  ka2_to_ka1), atomic_data_map));
7986  xka2 = xka - xka1;
7987  xkb = xk - xka;
7988  if (!isnan(l_conv)) {
7989  xl = (l_conv + k_conv*data_access<atomic> (z, offsetof(atomic,
7990  prob), atomic_data_map))*data_access<atomic> (z, offsetof(atomic,
7991  l_shell_fluor), atomic_data_map);
7992  }
7993  } else if (!isnan(l_conv)) {
7994  xl = l_conv*data_access<atomic> (z, offsetof(atomic,
7995  l_shell_fluor), atomic_data_map);
7996  }
7997  std::vector<std::pair<double, double> > result;
7998  result.push_back(std::make_pair(data_access<atomic> (z, offsetof(atomic,
7999  ka1_x_ray_en), atomic_data_map),xka1));
8000  result.push_back(std::make_pair(data_access<atomic> (z, offsetof(atomic,
8001  ka2_x_ray_en), atomic_data_map),xka2));
8002  result.push_back(std::make_pair(data_access<atomic> (z, offsetof(atomic,
8003  kb_x_ray_en), atomic_data_map),xkb));
8004  result.push_back(std::make_pair(data_access<atomic> (z, offsetof(atomic,
8005  l_x_ray_en), atomic_data_map),xl));
8006 
8007  return result;
8008 }
8009 
8010 
8011 //
8012 // Load level data
8013 //
8014 
8015 std::map<std::pair<int,double>, pyne::level_data> pyne::level_data_lvl_map;
8016 std::map<std::pair<int,unsigned int>,
8018 
8019 
8020 template<> void pyne::_load_data<pyne::level_data>()
8021 {
8022 
8023  // Loads the level table into memory
8024  herr_t status;
8025 
8026  //Check to see if the file is in HDF5 format.
8029 
8030  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
8031  if (!ish5)
8033 
8034  // Get the HDF5 compound type (table) description
8035  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(level_data));
8036  status = H5Tinsert(desc, "nuc_id", HOFFSET(level_data, nuc_id),
8037  H5T_NATIVE_INT);
8038  status = H5Tinsert(desc, "rx_id", HOFFSET(level_data, rx_id),
8039  H5T_NATIVE_UINT);
8040  status = H5Tinsert(desc, "half_life", HOFFSET(level_data, half_life),
8041  H5T_NATIVE_DOUBLE);
8042  status = H5Tinsert(desc, "level", HOFFSET(level_data, level),
8043  H5T_NATIVE_DOUBLE);
8044  status = H5Tinsert(desc, "branch_ratio", HOFFSET(level_data, branch_ratio),
8045  H5T_NATIVE_DOUBLE);
8046  status = H5Tinsert(desc, "metastable", HOFFSET(level_data, metastable),
8047  H5T_NATIVE_INT);
8048  status = H5Tinsert(desc, "special", HOFFSET(level_data, special),
8049  H5T_C_S1);
8050  // Open the HDF5 file
8051  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
8052  H5P_DEFAULT);
8053  // Open the data set
8054  hid_t level_set = H5Dopen2(nuc_data_h5, "/decay/level_list", H5P_DEFAULT);
8055  hid_t level_space = H5Dget_space(level_set);
8056  int level_length = H5Sget_simple_extent_npoints(level_space);
8057 
8058  // Read in the data
8059  level_data * level_array = new level_data[level_length];
8060  status = H5Dread(level_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT,
8061  level_array);
8062 
8063  // close the nuc_data library, before doing anything stupid
8064  status = H5Dclose(level_set);
8065  status = H5Fclose(nuc_data_h5);
8066 
8067  for (int i = 0; i < level_length; ++i) {
8068  if (level_array[i].rx_id == 0)
8069  level_data_lvl_map[std::make_pair(level_array[i].nuc_id,
8070  level_array[i].level)] = level_array[i];
8071  else
8072  level_data_rx_map[std::make_pair(level_array[i].nuc_id,
8073  level_array[i].rx_id)] = level_array[i];
8074  }
8075 
8076  delete[] level_array;
8077 }
8078 
8079 //
8080 // level id
8081 //
8082 int pyne::id_from_level(int nuc, double level, std::string special) {
8083  int nostate = (nuc / 10000) * 10000;
8084  if (level_data_lvl_map.empty()) {
8086  }
8087 
8088  std::map<std::pair<int, double>, level_data>::iterator nuc_lower, nuc_upper;
8089 
8090  nuc_lower = level_data_lvl_map.lower_bound(std::make_pair(nostate, 0.0));
8091  nuc_upper = level_data_lvl_map.upper_bound(std::make_pair(nostate+9999,
8092  DBL_MAX));
8093  double minv = DBL_MAX;
8094  //by default return input nuc_id with level stripped
8095  int ret_id = nuc;
8096  for (std::map<std::pair<int, double>, level_data>::iterator it=nuc_lower;
8097  it!=nuc_upper; ++it) {
8098  if ((abs(level - it->second.level) < minv) &&
8099  ((char)it->second.special == special.c_str()[0]) &&
8100  !isnan(it->second.level)) {
8101  minv = abs(level - it->second.level);
8102  ret_id = it->second.nuc_id;
8103  }
8104  }
8105  // This value was chosen so important transitions in U-235 are not missed
8106  if (minv > 3.0)
8107  return -nuc;
8108  else
8109  return ret_id;
8110 }
8111 
8112 int pyne::id_from_level(int nuc, double level){
8113  return id_from_level(nuc, level, " ");
8114 }
8115 //
8116 // Metastable id data
8117 //
8118 
8119 int pyne::metastable_id(int nuc, int m) {
8120  int nostate = (nuc / 10000) * 10000;
8121  if (m==0) return nostate;
8122  if (level_data_lvl_map.empty()) {
8124  }
8125 
8126  std::map<std::pair<int, double>, level_data>::iterator nuc_lower, nuc_upper;
8127 
8128  nuc_lower = level_data_lvl_map.lower_bound(std::make_pair(nostate, 0.0));
8129  nuc_upper = level_data_lvl_map.upper_bound(std::make_pair(nostate+9999,
8130  DBL_MAX));
8131  for (std::map<std::pair<int, double>, level_data>::iterator it=nuc_lower;
8132  it!=nuc_upper; ++it) {
8133  if (it->second.metastable == m)
8134  return it->second.nuc_id;
8135  }
8136 
8137  return nuc;
8138 }
8139 
8140 int pyne::metastable_id(int nuc) {
8141  return metastable_id(nuc, 1);
8142 }
8143 
8144 //
8145 // Decay children data
8146 //
8147 
8148 
8149 std::set<int> pyne::decay_children(int nuc) {
8150  // make sure spontaneous fission data is loaded
8151  if (wimsdfpy_data.empty())
8152  _load_wimsdfpy();
8153 
8154  std::vector<unsigned int> part = data_access<unsigned int, level_data>(nuc,
8155  offsetof(level_data, rx_id), level_data_rx_map);
8156  std::vector<unsigned int>::iterator it = part.begin();
8157  std::set<int> result;
8158  for (; it != part.end(); ++it) {
8159  switch (*it) {
8160  case 36125: {
8161  // internal conversion, rx == 'it'
8162  result.insert((nuc /10000) * 10000);
8163  break;
8164  }
8165  case 36565: {
8166  // spontaneous fission, rx == 'sf'
8167  std::map<std::pair<int, int>, double>::iterator sf = wimsdfpy_data.begin();
8168  for (; sf != wimsdfpy_data.end(); ++sf)
8169  if (sf->first.first == nuc)
8170  result.insert(sf->first.second);
8171  break;
8172  }
8173  default: {
8174  result.insert((rxname::child(nuc, *it, "decay") /10000) * 10000);
8175  }
8176  }
8177  }
8178  return result;
8179 }
8180 
8181 std::set<int> pyne::decay_children(char * nuc)
8182 {
8183  return decay_children(nucname::id(nuc));
8184 };
8185 
8186 std::set<int> pyne::decay_children(std::string nuc)
8187 {
8188  return decay_children(nucname::id(nuc));
8189 };
8190 
8191 //
8192 // Excitation state energy data
8193 //
8194 
8195 double pyne::state_energy(int nuc)
8196 {
8197  std::vector<double> result = data_access<double, level_data>(nuc, 0.0,
8198  DBL_MAX, offsetof(level_data, level), level_data_lvl_map);
8199  if (result.size() == 1)
8200  return result[0]/1000.0;
8201  return 0.0;
8202 }
8203 
8204 double pyne::state_energy(char * nuc)
8205 {
8206  return state_energy(nucname::id(nuc));
8207 };
8208 
8209 
8210 double pyne::state_energy(std::string nuc)
8211 {
8212  return state_energy(nucname::id(nuc));
8213 };
8214 
8215 
8216 //
8217 // Decay constant data
8218 //
8219 
8220 double pyne::decay_const(int nuc)
8221 {
8222  std::vector<double> result = data_access<double, level_data>(nuc, 0.0,
8223  DBL_MAX, offsetof(level_data, half_life), level_data_lvl_map);
8224  if (result.size() == 1) {
8225  return log(2.0)/result[0];
8226  }
8227  return 0.0;
8228 }
8229 
8230 
8231 double pyne::decay_const(char * nuc) {
8232  int nuc_zz = nucname::id(nuc);
8233  return decay_const(nuc_zz);
8234 };
8235 
8236 
8237 double pyne::decay_const(std::string nuc) {
8238  int nuc_zz = nucname::id(nuc);
8239  return decay_const(nuc_zz);
8240 };
8241 
8242 
8243 //
8244 // Half-life data
8245 //
8246 double pyne::half_life(int nuc) {
8247  std::vector<double> result = data_access<double, level_data>(nuc, 0.0,
8248  DBL_MAX, offsetof(level_data, half_life), level_data_lvl_map);
8249  if (result.size() == 1) {
8250  return result[0];
8251  }
8252  return 1.0/0.0;
8253 };
8254 
8255 
8256 double pyne::half_life(char * nuc) {
8257  int nuc_zz = nucname::id(nuc);
8258  return half_life(nuc_zz);
8259 };
8260 
8261 double pyne::half_life(std::string nuc) {
8262  int nuc_zz = nucname::id(nuc);
8263  return half_life(nuc_zz);
8264 };
8265 
8266 
8267 //
8268 // Branch ratio data
8269 //
8270 double pyne::branch_ratio(std::pair<int, int> from_to) {
8271  using std::vector;
8273  // make sure spontaneous fission data is loaded
8274  if (wimsdfpy_data.empty())
8275  _load_wimsdfpy();
8276 
8277  vector<unsigned int> part1 = \
8278  data_access<unsigned int, level_data>(from_to.first, offsetof(level_data, rx_id),
8280  vector<double> part2 = \
8281  data_access<double, level_data>(from_to.first, offsetof(level_data, branch_ratio),
8283  double result = 0.0;
8284  if ((from_to.first == from_to.second) && (decay_const(from_to.first) == 0.0))
8285  return 1.0;
8286  for (vector<unsigned int>::size_type i = 0; i < part1.size(); ++i) {
8287  if ((part1[i] == 36125) &&
8288  (groundstate(from_to.first) == groundstate(from_to.second)) &&
8289  (from_to.second % 10000 == 0)) {
8290  // internal conversion, rx == 'it'
8291  result = 1.0;
8292  break;
8293  } else if (part1[i] == 36565) {
8294  // spontaneous fission, rx == 'sf'
8295  result += part2[i] * 0.01 * wimsdfpy_data[from_to];
8296  } else if ((part1[i] != 0) && (groundstate(rxname::child(from_to.first,
8297  part1[i], "decay")) == from_to.second)) {
8298  result += part2[i] * 0.01;
8299  }
8300  }
8301  return result;
8302 }
8303 
8304 double pyne::branch_ratio(int from_nuc, int to_nuc) {
8305  return branch_ratio(std::pair<int, int>(nucname::id(from_nuc),
8306  nucname::id(to_nuc)));
8307 };
8308 
8309 double pyne::branch_ratio(char * from_nuc, char * to_nuc) {
8310  return branch_ratio(std::pair<int, int>(nucname::id(from_nuc),
8311  nucname::id(to_nuc)));
8312 };
8313 
8314 double pyne::branch_ratio(std::string from_nuc, std::string to_nuc) {
8315  return branch_ratio(std::pair<int, int>(nucname::id(from_nuc),
8316  nucname::id(to_nuc)));
8317 };
8318 
8319 std::map<std::pair<int, int>, pyne::decay> pyne::decay_data = \
8320  std::map<std::pair<int, int>, pyne::decay>();
8321 
8322 template<> void pyne::_load_data<pyne::decay>() {
8323 
8324  // Loads the decay table into memory
8325  herr_t status;
8326 
8327  //Check to see if the file is in HDF5 format.
8330 
8331  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
8332  if (!ish5)
8334 
8335  // Get the HDF5 compound type (table) description
8336  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(decay));
8337  status = H5Tinsert(desc, "parent", HOFFSET(decay, parent),
8338  H5T_NATIVE_INT);
8339  status = H5Tinsert(desc, "child", HOFFSET(decay, child),
8340  H5T_NATIVE_INT);
8341  status = H5Tinsert(desc, "decay", HOFFSET(decay, decay),
8342  H5T_NATIVE_UINT);
8343  status = H5Tinsert(desc, "half_life", HOFFSET(decay, half_life),
8344  H5T_NATIVE_DOUBLE);
8345  status = H5Tinsert(desc, "half_life_error", HOFFSET(decay,
8346  half_life_error), H5T_NATIVE_DOUBLE);
8347  status = H5Tinsert(desc, "branch_ratio", HOFFSET(decay, branch_ratio),
8348  H5T_NATIVE_DOUBLE);
8349  status = H5Tinsert(desc, "branch_ratio_error", HOFFSET(decay, branch_ratio_error),
8350  H5T_NATIVE_DOUBLE);
8351  status = H5Tinsert(desc, "photon_branch_ratio", HOFFSET(decay,
8352  photon_branch_ratio), H5T_NATIVE_DOUBLE);
8353  status = H5Tinsert(desc, "photon_branch_ratio_err", HOFFSET(decay,
8354  photon_branch_ratio_error), H5T_NATIVE_DOUBLE);
8355  status = H5Tinsert(desc, "beta_branch_ratio", HOFFSET(decay,
8356  beta_branch_ratio), H5T_NATIVE_DOUBLE);
8357  status = H5Tinsert(desc, "beta_branch_ratio_err", HOFFSET(decay,
8358  beta_branch_ratio_error), H5T_NATIVE_DOUBLE);
8359 
8360  // Open the HDF5 file
8361  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
8362  H5P_DEFAULT);
8363 
8364  // Open the data set
8365  hid_t decay_set = H5Dopen2(nuc_data_h5, "/decay/decays", H5P_DEFAULT);
8366  hid_t decay_space = H5Dget_space(decay_set);
8367  int decay_length = H5Sget_simple_extent_npoints(decay_space);
8368 
8369  // Read in the data
8370  decay * decay_array = new decay[decay_length];
8371  status = H5Dread(decay_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT,
8372  decay_array);
8373 
8374  // close the nuc_data library, before doing anything stupid
8375  status = H5Dclose(decay_set);
8376  status = H5Fclose(nuc_data_h5);
8377 
8378  for (int i = 0; i < decay_length; ++i) {
8379  decay_data[std::make_pair(decay_array[i].parent, decay_array[i].child)] = \
8380  decay_array[i];
8381  }
8382  delete[] decay_array;
8383 }
8384 
8385 
8386 std::vector<int> pyne::decay_data_children(int parent) {
8387  std::vector<int> result = data_access<int, decay>(parent,
8388  offsetof(decay, child), decay_data);
8389  return result;
8390 }
8391 
8392 std::pair<double, double> pyne::decay_half_life(std::pair<int, int> from_to){
8393  return std::make_pair(data_access<double, decay>(from_to, offsetof(
8394  decay, half_life), decay_data), data_access<double, decay>(
8395  from_to, offsetof(decay, half_life_error), decay_data));
8396 };
8397 
8398 std::vector<std::pair<double, double> >pyne::decay_half_lifes(int parent) {
8399  std::vector<std::pair<double, double> > result;
8400  std::vector<double> part1 = data_access<double, decay>(parent,
8401  offsetof(decay, half_life), decay_data);
8402  std::vector<double> part2 = data_access<double, decay>(parent,
8403  offsetof(decay, half_life_error), decay_data);
8404  for(int i = 0; i < part1.size(); ++i){
8405  result.push_back(std::make_pair(part1[i],part2[i]));
8406  }
8407  return result;
8408 }
8409 
8410 std::pair<double, double> pyne::decay_branch_ratio(std::pair<int, int> from_to) {
8411  return std::make_pair(data_access<double, decay>(from_to, offsetof(decay,
8412  branch_ratio), decay_data),data_access<double, decay>(from_to, offsetof(decay,
8413  branch_ratio_error), decay_data));
8414 };
8415 
8416 std::vector<double> pyne::decay_branch_ratios(int parent) {
8417  return data_access<double, decay>(parent, offsetof(decay,
8419 }
8420 
8421 std::pair<double, double> pyne::decay_photon_branch_ratio(std::pair<int,int>
8422 from_to) {
8423  return std::make_pair(data_access<double, decay>(from_to,
8424  offsetof(decay, photon_branch_ratio), decay_data),
8425  data_access<double, decay>(from_to, offsetof(decay,
8426  photon_branch_ratio_error), decay_data));
8427 };
8428 
8429 std::vector<std::pair<double, double> >pyne::decay_photon_branch_ratios(
8430 int parent) {
8431  std::vector<std::pair<double, double> > result;
8432  std::vector<double> part1 = data_access<double, decay>(parent,
8433  offsetof(decay, photon_branch_ratio), decay_data);
8434  std::vector<double> part2 = data_access<double, decay>(parent,
8435  offsetof(decay, photon_branch_ratio_error), decay_data);
8436  for(int i = 0; i < part1.size(); ++i){
8437  result.push_back(std::make_pair(part1[i],part2[i]));
8438  }
8439  return result;
8440 }
8441 
8442 std::pair<double, double> pyne::decay_beta_branch_ratio(std::pair<int,int>
8443 from_to) {
8444  return std::make_pair(data_access<double, decay>(from_to,
8445  offsetof(decay, beta_branch_ratio), decay_data),
8446  data_access<double, decay>(from_to, offsetof(decay,
8447  beta_branch_ratio_error), decay_data));
8448 };
8449 
8450 std::vector<std::pair<double, double> >pyne::decay_beta_branch_ratios(
8451 int parent) {
8452  std::vector<std::pair<double, double> > result;
8453  std::vector<double> part1 = data_access<double, decay>(parent,
8454  offsetof(decay, beta_branch_ratio), decay_data);
8455  std::vector<double> part2 = data_access<double, decay>(parent,
8456  offsetof(decay, beta_branch_ratio_error), decay_data);
8457  for(int i = 0; i < part1.size(); ++i){
8458  result.push_back(std::make_pair(part1[i],part2[i]));
8459  }
8460  return result;
8461 }
8462 
8463 std::map<std::pair<int, double>, pyne::gamma> pyne::gamma_data;
8464 
8465 template<> void pyne::_load_data<pyne::gamma>() {
8466 
8467  // Loads the gamma table into memory
8468  herr_t status;
8469 
8470  //Check to see if the file is in HDF5 format.
8473 
8474  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
8475  if (!ish5)
8477 
8478  // Get the HDF5 compound type (table) description
8479  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(gamma));
8480  status = H5Tinsert(desc, "from_nuc", HOFFSET(gamma, from_nuc),
8481  H5T_NATIVE_INT);
8482  status = H5Tinsert(desc, "to_nuc", HOFFSET(gamma, to_nuc),
8483  H5T_NATIVE_INT);
8484  status = H5Tinsert(desc, "parent_nuc", HOFFSET(gamma, parent_nuc),
8485  H5T_NATIVE_INT);
8486  status = H5Tinsert(desc, "child_nuc", HOFFSET(gamma, child_nuc),
8487  H5T_NATIVE_INT);
8488  status = H5Tinsert(desc, "energy", HOFFSET(gamma, energy),
8489  H5T_NATIVE_DOUBLE);
8490  status = H5Tinsert(desc, "energy_err", HOFFSET(gamma, energy_err),
8491  H5T_NATIVE_DOUBLE);
8492  status = H5Tinsert(desc, "photon_intensity", HOFFSET(gamma,
8493  photon_intensity), H5T_NATIVE_DOUBLE);
8494  status = H5Tinsert(desc, "photon_intensity_err", HOFFSET(gamma,
8495  photon_intensity_err), H5T_NATIVE_DOUBLE);
8496  status = H5Tinsert(desc, "conv_intensity", HOFFSET(gamma,
8497  conv_intensity), H5T_NATIVE_DOUBLE);
8498  status = H5Tinsert(desc, "conv_intensity_err", HOFFSET(gamma,
8499  conv_intensity_err), H5T_NATIVE_DOUBLE);
8500  status = H5Tinsert(desc, "total_intensity", HOFFSET(gamma,
8501  total_intensity), H5T_NATIVE_DOUBLE);
8502  status = H5Tinsert(desc, "total_intensity_err", HOFFSET(gamma,
8503  total_intensity_err), H5T_NATIVE_DOUBLE);
8504  status = H5Tinsert(desc, "k_conv_e", HOFFSET(gamma, k_conv_e),
8505  H5T_NATIVE_DOUBLE);
8506  status = H5Tinsert(desc, "l_conv_e", HOFFSET(gamma, l_conv_e),
8507  H5T_NATIVE_DOUBLE);
8508  status = H5Tinsert(desc, "m_conv_e", HOFFSET(gamma, m_conv_e),
8509  H5T_NATIVE_DOUBLE);
8510 
8511 
8512  // Open the HDF5 file
8513  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
8514  H5P_DEFAULT);
8515 
8516  // Open the data set
8517  hid_t gamma_set = H5Dopen2(nuc_data_h5, "/decay/gammas", H5P_DEFAULT);
8518  hid_t gamma_space = H5Dget_space(gamma_set);
8519  int gamma_length = H5Sget_simple_extent_npoints(gamma_space);
8520 
8521  // Read in the data
8522  gamma * gamma_array = new gamma[gamma_length];
8523  status = H5Dread(gamma_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT,
8524  gamma_array);
8525 
8526  // close the nuc_data library, before doing anything stupid
8527  status = H5Dclose(gamma_set);
8528  status = H5Fclose(nuc_data_h5);
8529 
8530  for (int i = 0; i < gamma_length; ++i) {
8531  if ((gamma_array[i].parent_nuc != 0) && !isnan(gamma_array[i].energy))
8532  gamma_data[std::make_pair(gamma_array[i].parent_nuc,
8533  gamma_array[i].energy)] = gamma_array[i];
8534  }
8535  delete[] gamma_array;
8536 }
8537 
8538 std::vector<std::pair<double, double> > pyne::gamma_energy(int parent) {
8539  std::vector<std::pair<double, double> > result;
8540  std::vector<double> part1 = data_access<double, gamma>(parent, 0.0,
8541  DBL_MAX, offsetof(gamma, energy), gamma_data);
8542  std::vector<double> part2 = data_access<double, gamma>(parent, 0.0,
8543  DBL_MAX, offsetof(gamma, energy_err), gamma_data);
8544  for(int i = 0; i < part1.size(); ++i){
8545  result.push_back(std::make_pair(part1[i],part2[i]));
8546  }
8547  return result;
8548 };
8549 
8550 std::vector<std::pair<double, double> > pyne::gamma_energy(double energy,
8551 double error) {
8552  std::vector<std::pair<double, double> > result;
8553  std::vector<double> part1 = data_access<double, gamma>(energy+error,
8554  energy-error, offsetof(gamma, energy), gamma_data);
8555  std::vector<double> part2 = data_access<double, gamma>(energy+error,
8556  energy-error, offsetof(gamma, energy_err), gamma_data);
8557  for(int i = 0; i < part1.size(); ++i){
8558  result.push_back(std::make_pair(part1[i],part2[i]));
8559  }
8560  return result;
8561 };
8562 
8563 std::vector<std::pair<double, double> > pyne::gamma_photon_intensity(
8564 int parent) {
8565  std::vector<std::pair<double, double> > result;
8566  std::vector<double> part1 = data_access<double, gamma>(parent, 0.0,
8567  DBL_MAX, offsetof(gamma, photon_intensity), gamma_data);
8568  std::vector<double> part2 = data_access<double, gamma>(parent, 0.0,
8569  DBL_MAX, offsetof(gamma, photon_intensity_err), gamma_data);
8570  for(int i = 0; i < part1.size(); ++i){
8571  result.push_back(std::make_pair(part1[i],part2[i]));
8572  }
8573  return result;
8574 };
8575 
8576 std::vector<std::pair<double, double> > pyne::gamma_photon_intensity(
8577 double energy, double error) {
8578  std::vector<std::pair<double, double> > result;
8579  std::vector<double> part1 = data_access<double, gamma>(energy+error,
8580  energy-error, offsetof(gamma, photon_intensity), gamma_data);
8581  std::vector<double> part2 = data_access<double, gamma>(energy+error,
8582  energy-error, offsetof(gamma, photon_intensity_err), gamma_data);
8583  for(int i = 0; i < part1.size(); ++i){
8584  result.push_back(std::make_pair(part1[i],part2[i]));
8585  }
8586  return result;
8587 };
8588 
8589 std::vector<std::pair<double, double> > pyne::gamma_conversion_intensity(
8590 int parent) {
8591  std::vector<std::pair<double, double> > result;
8592  std::vector<double> part1 = data_access<double, gamma>(parent, 0.0,
8593  DBL_MAX, offsetof(gamma, conv_intensity), gamma_data);
8594  std::vector<double> part2 = data_access<double, gamma>(parent, 0.0,
8595  DBL_MAX, offsetof(gamma, conv_intensity_err), gamma_data);
8596  for(int i = 0; i < part1.size(); ++i){
8597  result.push_back(std::make_pair(part1[i],part2[i]));
8598  }
8599  return result;
8600 };
8601 
8602 std::vector<std::pair<double, double> > pyne::gamma_total_intensity(
8603 int parent) {
8604  std::vector<std::pair<double, double> > result;
8605  std::vector<double> part1 = data_access<double, gamma>(parent, 0.0,
8606  DBL_MAX, offsetof(gamma, total_intensity), gamma_data);
8607  std::vector<double> part2 = data_access<double, gamma>(parent, 0.0,
8608  DBL_MAX, offsetof(gamma, total_intensity_err), gamma_data);
8609  for(int i = 0; i < part1.size(); ++i){
8610  result.push_back(std::make_pair(part1[i],part2[i]));
8611  }
8612  return result;
8613 };
8614 
8615 std::vector<std::pair<int, int> > pyne::gamma_from_to(int parent) {
8616  std::vector<std::pair<int, int> > result;
8617  std::vector<int> part1 = data_access<int, gamma>(parent, 0.0, DBL_MAX,
8618  offsetof(gamma, from_nuc), gamma_data);
8619  std::vector<int> part2 = data_access<int, gamma>(parent, 0.0, DBL_MAX,
8620  offsetof(gamma, to_nuc), gamma_data);
8621  for(int i = 0; i < part1.size(); ++i){
8622  result.push_back(std::make_pair(part1[i],part2[i]));
8623  }
8624  return result;
8625 };
8626 
8627 std::vector<std::pair<int, int> > pyne::gamma_from_to(double energy,
8628 double error) {
8629  std::vector<std::pair<int, int> > result;
8630  std::vector<int> part1 = data_access<int, gamma>(energy+error,
8631  energy-error, offsetof(gamma, from_nuc), gamma_data);
8632  std::vector<int> part2 = data_access<int, gamma>(energy+error,
8633  energy-error, offsetof(gamma, to_nuc), gamma_data);
8634  for(int i = 0; i < part1.size(); ++i){
8635  result.push_back(std::make_pair(part1[i],part2[i]));
8636  }
8637  return result;
8638 };
8639 
8640 
8641 std::vector<std::pair<int, int> > pyne::gamma_parent_child(double energy,
8642 double error) {
8643  std::vector<std::pair<int, int> > result;
8644  std::vector<int> part1 = data_access<int, gamma>(energy+error,
8645  energy-error, offsetof(gamma, parent_nuc), gamma_data);
8646  std::vector<int> part2 = data_access<int, gamma>(energy+error,
8647  energy-error, offsetof(gamma, child_nuc), gamma_data);
8648  for(int i = 0; i < part1.size(); ++i){
8649  result.push_back(std::make_pair(part1[i],part2[i]));
8650  }
8651  return result;
8652 };
8653 
8654 std::vector<int> pyne::gamma_parent(double energy, double error) {
8655  return data_access<int, gamma>(energy+error, energy-error,
8656  offsetof(gamma, parent_nuc), gamma_data);
8657 };
8658 
8659 std::vector<int> pyne::gamma_child(double energy, double error) {
8660  return data_access<int, gamma>(energy+error, energy-error,
8661  offsetof(gamma, child_nuc), gamma_data);
8662 };
8663 
8664 std::vector<int> pyne::gamma_child(int parent) {
8665  return data_access<int, gamma>(parent, 0.0, DBL_MAX,
8666  offsetof(gamma, child_nuc), gamma_data);
8667 };
8668 
8669 std::vector<std::pair<double, double> > pyne::gamma_xrays(int parent) {
8670  std::vector<std::pair<double, double> > result;
8671  std::vector<std::pair<double, double> > temp;
8672  std::vector<double> k_list = data_access<double, gamma>(parent, 0.0, DBL_MAX,
8673  offsetof(gamma, k_conv_e), gamma_data);
8674  std::vector<double> l_list = data_access<double, gamma>(parent, 0.0, DBL_MAX,
8675  offsetof(gamma, l_conv_e), gamma_data);
8676  std::vector<int> children = data_access<int, gamma>(parent, 0.0,
8677  DBL_MAX, offsetof(gamma, from_nuc), gamma_data);
8678  std::vector<int> decay_children = decay_data_children(parent);
8679  std::vector<std::pair<double, double> > decay_br =
8681  for(int i = 0; i < k_list.size(); ++i){
8682  for (int j = 0; j < decay_children.size(); ++j) {
8683  if (nucname::zzzaaa(children[i]) == nucname::zzzaaa(decay_children[j])) {
8684  temp = calculate_xray_data(nucname::znum(children[i]),
8685  k_list[i]*decay_br[j].first, l_list[i]*decay_br[j].first);
8686  for (int k = 0; k < temp.size(); ++k) {
8687  if (!isnan(temp[k].second) && !isnan(temp[k].first)) {
8688  int found = 0;
8689  for (int l = 0; l < result.size(); ++l) {
8690  if (temp[k].first == result[l].first) {
8691  result[l].second = result[l].second + temp[k].second;
8692  found = 1;
8693  break;
8694  }
8695  }
8696  if (found == 0) {
8697  result.push_back(temp[k]);
8698  }
8699  }
8700  }
8701  break;
8702  }
8703  }
8704  }
8705  return result;
8706 };
8707 
8708 std::map<std::pair<int, double>, pyne::alpha> pyne::alpha_data;
8709 
8710 template<> void pyne::_load_data<pyne::alpha>() {
8711 
8712  // Loads the alpha table into memory
8713  herr_t status;
8714 
8715  //Check to see if the file is in HDF5 format.
8718 
8719  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
8720  if (!ish5)
8722 
8723  // Get the HDF5 compound type (table) description
8724  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(alpha));
8725  status = H5Tinsert(desc, "from_nuc", HOFFSET(alpha, from_nuc),
8726  H5T_NATIVE_INT);
8727  status = H5Tinsert(desc, "to_nuc", HOFFSET(alpha, to_nuc),
8728  H5T_NATIVE_INT);
8729  status = H5Tinsert(desc, "energy", HOFFSET(alpha, energy),
8730  H5T_NATIVE_DOUBLE);
8731  status = H5Tinsert(desc, "intensity", HOFFSET(alpha, intensity),
8732  H5T_NATIVE_DOUBLE);
8733 
8734 
8735  // Open the HDF5 file
8736  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
8737  H5P_DEFAULT);
8738 
8739  // Open the data set
8740  hid_t alpha_set = H5Dopen2(nuc_data_h5, "/decay/alphas", H5P_DEFAULT);
8741  hid_t alpha_space = H5Dget_space(alpha_set);
8742  int alpha_length = H5Sget_simple_extent_npoints(alpha_space);
8743 
8744  // Read in the data
8745  alpha * alpha_array = new alpha[alpha_length];
8746  status = H5Dread(alpha_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT,
8747  alpha_array);
8748 
8749  // close the nuc_data library, before doing anything stupid
8750  status = H5Dclose(alpha_set);
8751  status = H5Fclose(nuc_data_h5);
8752 
8753  for (int i = 0; i < alpha_length; ++i) {
8754  if ((alpha_array[i].from_nuc != 0) && !isnan(alpha_array[i].energy))
8755  alpha_data[std::make_pair(alpha_array[i].from_nuc, alpha_array[i].energy)]
8756  = alpha_array[i];
8757  }
8758  delete[] alpha_array;
8759 }
8760 
8761 std::vector<double > pyne::alpha_energy(int parent){
8762  return data_access<double, alpha>(parent, 0.0, DBL_MAX,
8763  offsetof(alpha,energy), alpha_data);
8764 };
8765 std::vector<double> pyne::alpha_intensity(int parent){
8766  return data_access<double, alpha>(parent, 0.0, DBL_MAX,
8767  offsetof(alpha,intensity), alpha_data);
8768 };
8769 
8770 std::vector<int> pyne::alpha_parent(double energy, double error) {
8771  return data_access<int, alpha>(energy+error, energy-error,
8772  offsetof(alpha, from_nuc), alpha_data);
8773 };
8774 
8775 std::vector<int> pyne::alpha_child(double energy, double error) {
8776  return data_access<int, alpha>(energy+error, energy-error,
8777  offsetof(alpha, to_nuc), alpha_data);
8778 };
8779 
8780 std::vector<int> pyne::alpha_child(int parent){
8781  return data_access<int, alpha>(parent, 0.0, DBL_MAX,
8782  offsetof(alpha, to_nuc), alpha_data);
8783 };
8784 
8785 std::map<std::pair<int, double>, pyne::beta> pyne::beta_data;
8786 
8787 template<> void pyne::_load_data<pyne::beta>() {
8788 
8789  // Loads the beta table into memory
8790  herr_t status;
8791 
8792  //Check to see if the file is in HDF5 format.
8795 
8796  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
8797  if (!ish5)
8799 
8800  // Get the HDF5 compound type (table) description
8801  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(beta));
8802  status = H5Tinsert(desc, "endpoint_energy", HOFFSET(beta,
8803  endpoint_energy), H5T_NATIVE_DOUBLE);
8804  status = H5Tinsert(desc, "avg_energy", HOFFSET(beta, avg_energy),
8805  H5T_NATIVE_DOUBLE);
8806  status = H5Tinsert(desc, "intensity", HOFFSET(beta, intensity),
8807  H5T_NATIVE_DOUBLE);
8808  status = H5Tinsert(desc, "from_nuc", HOFFSET(beta, from_nuc),
8809  H5T_NATIVE_INT);
8810  status = H5Tinsert(desc, "to_nuc", HOFFSET(beta, to_nuc),
8811  H5T_NATIVE_INT);
8812 
8813 
8814  // Open the HDF5 file
8815  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
8816  H5P_DEFAULT);
8817 
8818  // Open the data set
8819  hid_t beta_set = H5Dopen2(nuc_data_h5, "/decay/betas", H5P_DEFAULT);
8820  hid_t beta_space = H5Dget_space(beta_set);
8821  int beta_length = H5Sget_simple_extent_npoints(beta_space);
8822 
8823  // Read in the data
8824  beta * beta_array = new beta[beta_length];
8825  status = H5Dread(beta_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, beta_array);
8826 
8827  // close the nuc_data library, before doing anything stupid
8828  status = H5Dclose(beta_set);
8829  status = H5Fclose(nuc_data_h5);
8830 
8831  for (int i = 0; i < beta_length; ++i) {
8832  if ((beta_array[i].from_nuc != 0) && !isnan(beta_array[i].avg_energy))
8833  beta_data[std::make_pair(beta_array[i].from_nuc, beta_array[i].avg_energy)]
8834  = beta_array[i];
8835  }
8836  delete[] beta_array;
8837 }
8838 
8839 std::vector<double > pyne::beta_endpoint_energy(int parent){
8840  return data_access<double, beta>(parent, 0.0, DBL_MAX,
8841  offsetof(beta, endpoint_energy), beta_data);
8842 };
8843 
8844 std::vector<double > pyne::beta_average_energy(int parent){
8845  return data_access<double, beta>(parent, 0.0, DBL_MAX,
8846  offsetof(beta, avg_energy), beta_data);
8847 };
8848 
8849 std::vector<double> pyne::beta_intensity(int parent){
8850  return data_access<double, beta>(parent, 0.0, DBL_MAX,
8851  offsetof(beta, intensity), beta_data);
8852 };
8853 
8854 std::vector<int> pyne::beta_parent(double energy, double error) {
8855  return data_access<int, beta>(energy+error, energy-error,
8856  offsetof(beta, from_nuc), beta_data);
8857 };
8858 
8859 std::vector<int> pyne::beta_child(double energy, double error) {
8860  return data_access<int, beta>(energy+error, energy-error,
8861  offsetof(beta, to_nuc), beta_data);
8862 };
8863 
8864 std::vector<int> pyne::beta_child(int parent){
8865  return data_access<int, beta>(parent, 0.0, DBL_MAX,
8866  offsetof(beta, to_nuc),beta_data);
8867 };
8868 
8869 
8870 std::map<std::pair<int, double>, pyne::ecbp> pyne::ecbp_data;
8871 
8872 template<> void pyne::_load_data<pyne::ecbp>() {
8873 
8874  // Loads the ecbp table into memory
8875  herr_t status;
8876 
8877  //Check to see if the file is in HDF5 format.
8880 
8881  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
8882  if (!ish5)
8884 
8885  // Get the HDF5 compound type (table) description
8886  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(ecbp));
8887  status = H5Tinsert(desc, "from_nuc", HOFFSET(ecbp, from_nuc),
8888  H5T_NATIVE_INT);
8889  status = H5Tinsert(desc, "to_nuc", HOFFSET(ecbp, to_nuc),
8890  H5T_NATIVE_INT);
8891  status = H5Tinsert(desc, "endpoint_energy", HOFFSET(ecbp,
8892  endpoint_energy),H5T_NATIVE_DOUBLE);
8893  status = H5Tinsert(desc, "avg_energy", HOFFSET(ecbp, avg_energy),
8894  H5T_NATIVE_DOUBLE);
8895  status = H5Tinsert(desc, "beta_plus_intensity", HOFFSET(ecbp,
8896  beta_plus_intensity), H5T_NATIVE_DOUBLE);
8897  status = H5Tinsert(desc, "ec_intensity", HOFFSET(ecbp, ec_intensity),
8898  H5T_NATIVE_DOUBLE);
8899  status = H5Tinsert(desc, "k_conv_e", HOFFSET(ecbp, k_conv_e),
8900  H5T_NATIVE_DOUBLE);
8901  status = H5Tinsert(desc, "l_conv_e", HOFFSET(ecbp, l_conv_e),
8902  H5T_NATIVE_DOUBLE);
8903  status = H5Tinsert(desc, "m_conv_e", HOFFSET(ecbp, m_conv_e),
8904  H5T_NATIVE_DOUBLE);
8905 
8906  // Open the HDF5 file
8907  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY,
8908  H5P_DEFAULT);
8909 
8910  // Open the data set
8911  hid_t ecbp_set = H5Dopen2(nuc_data_h5, "/decay/ecbp", H5P_DEFAULT);
8912  hid_t ecbp_space = H5Dget_space(ecbp_set);
8913  int ecbp_length = H5Sget_simple_extent_npoints(ecbp_space);
8914 
8915  // Read in the data
8916  ecbp * ecbp_array = new ecbp[ecbp_length];
8917  status = H5Dread(ecbp_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, ecbp_array);
8918 
8919  // close the nuc_data library, before doing anything stupid
8920  status = H5Dclose(ecbp_set);
8921  status = H5Fclose(nuc_data_h5);
8922 
8923  for (int i = 0; i < ecbp_length; ++i) {
8924  if ((ecbp_array[i].from_nuc != 0) && !isnan(ecbp_array[i].avg_energy))
8925  ecbp_data[std::make_pair(ecbp_array[i].from_nuc, ecbp_array[i].avg_energy)]
8926  = ecbp_array[i];
8927  }
8928  delete[] ecbp_array;
8929 }
8930 
8931 std::vector<double > pyne::ecbp_endpoint_energy(int parent){
8932  return data_access<double, ecbp>(parent, 0.0, DBL_MAX,
8933  offsetof(ecbp,endpoint_energy), ecbp_data);
8934 };
8935 
8936 std::vector<double > pyne::ecbp_average_energy(int parent){
8937  return data_access<double, ecbp>(parent, 0.0, DBL_MAX,
8938  offsetof(ecbp, avg_energy), ecbp_data);
8939 };
8940 
8941 std::vector<double> pyne::ec_intensity(int parent){
8942  return data_access<double, ecbp>(parent, 0.0, DBL_MAX,
8943  offsetof(ecbp, ec_intensity), ecbp_data);
8944 };
8945 
8946 std::vector<double> pyne::bp_intensity(int parent){
8947  return data_access<double, ecbp>(parent, 0.0, DBL_MAX,
8948  offsetof(ecbp, beta_plus_intensity), ecbp_data);
8949 };
8950 
8951 std::vector<int> pyne::ecbp_parent(double energy, double error) {
8952  return data_access<int, ecbp>(energy+error, energy-error,
8953  offsetof(ecbp, from_nuc), ecbp_data);
8954 };
8955 
8956 std::vector<int> pyne::ecbp_child(double energy, double error) {
8957  return data_access<int, ecbp>(energy+error, energy-error,
8958  offsetof(ecbp, to_nuc), ecbp_data);
8959 };
8960 
8961 std::vector<int> pyne::ecbp_child(int parent){
8962  return data_access<int, ecbp>(parent, 0.0, DBL_MAX,
8963  offsetof(ecbp, to_nuc), ecbp_data);
8964 };
8965 
8966 std::vector<std::pair<double, double> > pyne::ecbp_xrays(int parent) {
8967  std::vector<std::pair<double, double> > result;
8968  std::vector<std::pair<double, double> > temp;
8969  std::vector<double> k_list = data_access<double, ecbp>(parent, 0.0, DBL_MAX,
8970  offsetof(ecbp, k_conv_e), ecbp_data);
8971  std::vector<double> l_list = data_access<double, ecbp>(parent, 0.0, DBL_MAX,
8972  offsetof(ecbp, l_conv_e), ecbp_data);
8973  std::vector<int> children = data_access<int, ecbp>(parent, 0.0, DBL_MAX,
8974  offsetof(ecbp, to_nuc), ecbp_data);
8975  std::vector<int> decay_children = decay_data_children(parent);
8976  std::vector<std::pair<double, double> > decay_br =
8977  decay_beta_branch_ratios(parent);
8978  for(int i = 0; i < k_list.size(); ++i){
8979  for (int j = 0; j < decay_children.size(); ++j) {
8980  if (nucname::zzzaaa(children[i]) == nucname::zzzaaa(decay_children[j])) {
8981  temp = calculate_xray_data(nucname::znum(children[i]),
8982  k_list[i]*decay_br[j].first, l_list[i]*decay_br[j].first);
8983  for (int k = 0; k < temp.size(); ++k) {
8984  if (!isnan(temp[k].second) && !isnan(temp[k].first)) {
8985  int found = 0;
8986  for (int l = 0; l < result.size(); ++l) {
8987  if (temp[k].first == result[l].first) {
8988  result[l].second = result[l].second + temp[k].second;
8989  found = 1;
8990  break;
8991  }
8992  }
8993  if (found == 0) {
8994  result.push_back(temp[k]);
8995  }
8996  }
8997  }
8998  break;
8999  }
9000  }
9001  }
9002  return result;
9003 };
9004 
9005 ///////////////////////////
9006 /// Combined decay data ///
9007 ///////////////////////////
9008 
9009 std::vector<std::pair<double, double> > pyne::gammas(int parent_state_id) {
9010  std::vector<std::pair<double, double> > result;
9011  double decay_c = decay_const(parent_state_id);
9012  std::vector<std::pair<double, double> > energies = gamma_energy(parent_state_id);
9013  std::vector<std::pair<double, double> > intensities =
9014  gamma_photon_intensity(parent_state_id);
9015  std::vector<std::pair<int, int> > children = gamma_from_to(parent_state_id);
9016  std::vector<int> decay_children = decay_data_children(parent_state_id);
9017  std::vector<std::pair<double, double> > decay_br =
9018  decay_photon_branch_ratios(parent_state_id);
9019  for (int i = 0; i < children.size(); ++i) {
9020  for (int j = 0; j < decay_children.size(); ++j) {
9021  if (nucname::zzzaaa(children[i].first) == nucname::zzzaaa(decay_children[j])) {
9022  result.push_back(std::make_pair(energies[i].first,
9023  decay_c*intensities[i].first*decay_br[j].first));
9024  }
9025  }
9026  }
9027  return result;
9028 }
9029 
9030 std::vector<std::pair<double, double> > pyne::alphas(int parent_state_id) {
9031  std::vector<std::pair<double, double> > result;
9032  double decay_c = decay_const(parent_state_id);
9033  std::vector<double> energies = alpha_energy(parent_state_id);
9034  std::vector<double> intensities = alpha_intensity(parent_state_id);
9035  std::vector<int> children = alpha_child(parent_state_id);
9036  std::vector<int> decay_children = decay_data_children(parent_state_id);
9037  std::vector<double> decay_br = decay_branch_ratios(parent_state_id);
9038  for (int i = 0; i < children.size(); ++i) {
9039  for (int j = 0; j < decay_children.size(); ++j) {
9040  if (nucname::zzzaaa(children[i]) == nucname::zzzaaa(decay_children[j])) {
9041  result.push_back(std::make_pair(energies[i],
9042  decay_c*decay_br[j]*intensities[i]));
9043  }
9044  }
9045  }
9046  return result;
9047 }
9048 
9049 std::vector<std::pair<double, double> > pyne::betas(int parent_state_id) {
9050  std::vector<std::pair<double, double> > result;
9051  double decay_c = decay_const(parent_state_id);
9052  std::vector<double> energies = beta_average_energy(parent_state_id);
9053  std::vector<double> intensities = beta_intensity(parent_state_id);
9054  std::vector<int> children = beta_child(parent_state_id);
9055  std::vector<int> decay_children = decay_data_children(parent_state_id);
9056  std::vector<std::pair<double, double> > decay_br =
9057  decay_beta_branch_ratios(parent_state_id);
9058  for (int i = 0; i < children.size(); ++i) {
9059  for (int j = 0; j < decay_children.size(); ++j) {
9060  if (nucname::zzzaaa(children[i]) == nucname::zzzaaa(decay_children[j])) {
9061  result.push_back(std::make_pair(energies[i],
9062  decay_c*decay_br[j].first*intensities[i]));
9063  break;
9064  }
9065  }
9066  }
9067  return result;
9068 }
9069 
9070 std::vector<std::pair<double, double> > pyne::xrays(int parent) {
9071  double decay_c = decay_const(parent);
9072  std::vector<std::pair<double, double> > result;
9073  std::vector<std::pair<double, double> > temp;
9074  std::vector<double> k_list = data_access<double, ecbp>(parent, 0.0, DBL_MAX,
9075  offsetof(ecbp, k_conv_e), ecbp_data);
9076  std::vector<double> l_list = data_access<double, ecbp>(parent, 0.0, DBL_MAX,
9077  offsetof(ecbp, l_conv_e), ecbp_data);
9078  std::vector<int> children = data_access<int, ecbp>(parent, 0.0, DBL_MAX,
9079  offsetof(ecbp, to_nuc), ecbp_data);
9080  std::vector<int> decay_children = decay_data_children(parent);
9081  std::vector<std::pair<double, double> > decay_br =
9082  decay_beta_branch_ratios(parent);
9083  for(int i = 0; i < k_list.size(); ++i){
9084  for (int j = 0; j < decay_children.size(); ++j) {
9085  if (nucname::zzzaaa(children[i]) == nucname::zzzaaa(decay_children[j])) {
9086  temp = calculate_xray_data(nucname::znum(children[i]),
9087  k_list[i]*decay_br[j].first, l_list[i]*decay_br[j].first);
9088  for (int k = 0; k < temp.size(); ++k) {
9089  if (!isnan(temp[k].second) && !isnan(temp[k].first)) {
9090  int found = 0;
9091  for (int l = 0; l < result.size(); ++l) {
9092  if (temp[k].first == result[l].first) {
9093  result[l].second = result[l].second + temp[k].second;
9094  found = 1;
9095  break;
9096  }
9097  }
9098  if (found == 0) {
9099  result.push_back(temp[k]);
9100  }
9101  }
9102  }
9103  break;
9104  }
9105  }
9106  }
9107  std::vector<double> gk_list = data_access<double, gamma>(parent, 0.0, DBL_MAX,
9108  offsetof(gamma, k_conv_e), gamma_data);
9109  std::vector<double> gl_list = data_access<double, gamma>(parent, 0.0, DBL_MAX,
9110  offsetof(gamma, l_conv_e), gamma_data);
9111  std::vector<int> gchildren = data_access<int, gamma>(parent, 0.0,
9112  DBL_MAX, offsetof(gamma, from_nuc), gamma_data);
9113  std::vector<std::pair<double, double> > decay_nrbr =
9115  for(int i = 0; i < gk_list.size(); ++i){
9116  for (int j = 0; j < decay_children.size(); ++j) {
9117  if (nucname::zzzaaa(gchildren[i]) == nucname::zzzaaa(decay_children[j])) {
9118  temp = calculate_xray_data(nucname::znum(gchildren[i]),
9119  gk_list[i]*decay_nrbr[j].first, gl_list[i]*decay_nrbr[j].first);
9120  for (int k = 0; k < temp.size(); ++k) {
9121  if (!isnan(temp[k].second) && !isnan(temp[k].first)) {
9122  int found = 0;
9123  for (int l = 0; l < result.size(); ++l) {
9124  if (temp[k].first == result[l].first) {
9125  result[l].second = result[l].second + temp[k].second;
9126  found = 1;
9127  break;
9128  }
9129  }
9130  if (found == 0) {
9131  result.push_back(temp[k]);
9132  }
9133  }
9134  }
9135  break;
9136  }
9137  }
9138  }
9139 
9140  for(int i = 0; i < result.size(); ++i)
9141  result[i].second = result[i].second * decay_c;
9142  return result;
9143 };
9144 
9145 //////////////////////////////////////////
9146 //////////// simple xs data //////////////
9147 //////////////////////////////////////////
9148 
9149 typedef struct simple_xs {
9150  int nuc;
9151  double sigma_t;
9152  double sigma_s;
9153  double sigma_e;
9154  double sigma_i;
9155  double sigma_a;
9156  double sigma_gamma;
9157  double sigma_f;
9158  double sigma_alpha;
9160  double sigma_deut;
9161  double sigma_trit;
9162  double sigma_2n;
9163  double sigma_3n;
9164  double sigma_4n;
9165 } simple_xs;
9166 
9167 std::map<std::string, std::map<int, std::map<int, double> > > pyne::simple_xs_map;
9168 
9169 // loads the simple cross section data for the specified energy band from
9170 // the nuc_data.h5 file into memory.
9171 static void _load_simple_xs_map(std::string energy) {
9172  //Check to see if the file is in HDF5 format.
9175 
9176  bool ish5 = H5Fis_hdf5(pyne::NUC_DATA_PATH.c_str());
9177  if (!ish5)
9179 
9180  using pyne::rxname::id;
9181  std::map<unsigned int, size_t> rxns;
9182  rxns[id("tot")] = offsetof(simple_xs, sigma_t);
9183  rxns[id("scat")] = offsetof(simple_xs, sigma_s);
9184  rxns[id("elas")] = offsetof(simple_xs, sigma_e);
9185  rxns[id("inel")] = offsetof(simple_xs, sigma_i);
9186  rxns[id("abs")] = offsetof(simple_xs, sigma_a);
9187  rxns[id("gamma")] = offsetof(simple_xs, sigma_gamma);
9188  rxns[id("fiss")] = offsetof(simple_xs, sigma_f);
9189  rxns[id("alpha")] = offsetof(simple_xs, sigma_alpha);
9190  rxns[id("proton")] = offsetof(simple_xs, sigma_proton);
9191  rxns[id("deut")] = offsetof(simple_xs, sigma_deut);
9192  rxns[id("trit")] = offsetof(simple_xs, sigma_trit);
9193  rxns[id("z_2n")] = offsetof(simple_xs, sigma_2n);
9194  rxns[id("z_3n")] = offsetof(simple_xs, sigma_3n);
9195  rxns[id("z_4n")] = offsetof(simple_xs, sigma_4n);
9196 
9197  // Get the HDF5 compound type (table) description
9198  hid_t desc = H5Tcreate(H5T_COMPOUND, sizeof(simple_xs));
9199  H5Tinsert(desc, "nuc", HOFFSET(simple_xs, nuc), H5T_NATIVE_INT);
9200  H5Tinsert(desc, "sigma_t", HOFFSET(simple_xs, sigma_t), H5T_NATIVE_DOUBLE);
9201  H5Tinsert(desc, "sigma_s", HOFFSET(simple_xs, sigma_s), H5T_NATIVE_DOUBLE);
9202  H5Tinsert(desc, "sigma_e", HOFFSET(simple_xs, sigma_e), H5T_NATIVE_DOUBLE);
9203  H5Tinsert(desc, "sigma_i", HOFFSET(simple_xs, sigma_i), H5T_NATIVE_DOUBLE);
9204  H5Tinsert(desc, "sigma_a", HOFFSET(simple_xs, sigma_a), H5T_NATIVE_DOUBLE);
9205  H5Tinsert(desc, "sigma_gamma", HOFFSET(simple_xs, sigma_gamma), H5T_NATIVE_DOUBLE);
9206  H5Tinsert(desc, "sigma_f", HOFFSET(simple_xs, sigma_f), H5T_NATIVE_DOUBLE);
9207  H5Tinsert(desc, "sigma_alpha", HOFFSET(simple_xs, sigma_alpha), H5T_NATIVE_DOUBLE);
9208  H5Tinsert(desc, "sigma_proton", HOFFSET(simple_xs, sigma_proton), H5T_NATIVE_DOUBLE);
9209  H5Tinsert(desc, "sigma_deut", HOFFSET(simple_xs, sigma_deut), H5T_NATIVE_DOUBLE);
9210  H5Tinsert(desc, "sigma_trit", HOFFSET(simple_xs, sigma_trit), H5T_NATIVE_DOUBLE);
9211  H5Tinsert(desc, "sigma_2n", HOFFSET(simple_xs, sigma_2n), H5T_NATIVE_DOUBLE);
9212  H5Tinsert(desc, "sigma_3n", HOFFSET(simple_xs, sigma_3n), H5T_NATIVE_DOUBLE);
9213  H5Tinsert(desc, "sigma_4n", HOFFSET(simple_xs, sigma_4n), H5T_NATIVE_DOUBLE);
9214 
9215  // Open the HDF5 file
9216  hid_t nuc_data_h5 = H5Fopen(pyne::NUC_DATA_PATH.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT);
9217 
9218  // build path to prober simple xs table
9219  std::string path = "/neutron/simple_xs/" + energy;
9220 
9221  // Open the data set
9222  hid_t simple_xs_set = H5Dopen2(nuc_data_h5, path.c_str(), H5P_DEFAULT);
9223  hid_t simple_xs_space = H5Dget_space(simple_xs_set);
9224  int n = H5Sget_simple_extent_npoints(simple_xs_space);
9225 
9226  // Read in the data
9227  simple_xs* array = new simple_xs[n];
9228  H5Dread(simple_xs_set, desc, H5S_ALL, H5S_ALL, H5P_DEFAULT, array);
9229 
9230  // close the nuc_data library, before doing anything stupid
9231  H5Dclose(simple_xs_set);
9232  H5Fclose(nuc_data_h5);
9233 
9234  // Ok now that we have the array of stucts, put it in the map
9235  for(int i = 0; i < n; i++) {
9236  std::map<unsigned int, size_t>::iterator it;
9237  for (it = rxns.begin(); it != rxns.end(); ++it) {
9238  double xs = *(double*)((char*)&array[i] + it->second);
9239  pyne::simple_xs_map[energy][array[i].nuc][it->first] = xs;
9240  }
9241  }
9242  delete[] array;
9243 }
9244 
9245 double pyne::simple_xs(int nuc, int rx_id, std::string energy) {
9246  std::set<std::string> energies;
9247  energies.insert("thermal");
9248  energies.insert("thermal_maxwell_ave");
9249  energies.insert("resonance_integral");
9250  energies.insert("fourteen_MeV");
9251  energies.insert("fission_spectrum_ave");
9252 
9253  if (energies.count(energy) == 0) {
9254  throw InvalidSimpleXS("Energy '" + energy +
9255  "' is not a valid simple_xs group");
9256  } else if (simple_xs_map.count(energy) == 0) {
9257  _load_simple_xs_map(energy);
9258  }
9259 
9260  if (simple_xs_map[energy].count(nuc) == 0) {
9261  throw InvalidSimpleXS(rxname::name(rx_id) +
9262  " is not a valid simple_xs nuclide");
9263  } else if (simple_xs_map[energy][nuc].count(rx_id) == 0) {
9264  throw InvalidSimpleXS(rxname::name(rx_id) +
9265  " is not a valid simple_xs reaction");
9266  }
9267 
9268  return simple_xs_map[energy][nuc][rx_id];
9269 }
9270 
9271 double pyne::simple_xs(int nuc, std::string rx, std::string energy) {
9272  return pyne::simple_xs(nucname::id(nuc), rxname::id(rx), energy);
9273 }
9274 double pyne::simple_xs(std::string nuc, int rx, std::string energy) {
9275  return pyne::simple_xs(nucname::id(nuc), rxname::id(rx), energy);
9276 }
9277 double pyne::simple_xs(std::string nuc, std::string rx, std::string energy) {
9278  return pyne::simple_xs(nucname::id(nuc), rxname::id(rx), energy);
9279 }
9280 //
9281 // end of src/data.cpp
9282 //
9283 
9284 
9285 //
9286 // start of src/jsoncpp.cpp
9287 //
9288 /// Json-cpp amalgated source (http://jsoncpp.sourceforge.net/).
9289 /// It is intented to be used with #include <json.h>
9290 
9291 // //////////////////////////////////////////////////////////////////////
9292 // Beginning of content of file: LICENSE
9293 // //////////////////////////////////////////////////////////////////////
9294 
9295 /*
9296 The JsonCpp library's source code, including accompanying documentation,
9297 tests and demonstration applications, are licensed under the following
9298 conditions...
9299 
9300 The author (Baptiste Lepilleur) explicitly disclaims copyright in all
9301 jurisdictions which recognize such a disclaimer. In such jurisdictions,
9302 this software is released into the Public Domain.
9303 
9304 In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
9305 2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
9306 released under the terms of the MIT License (see below).
9307 
9308 In jurisdictions which recognize Public Domain property, the user of this
9309 software may choose to accept it either as 1) Public Domain, 2) under the
9310 conditions of the MIT License (see below), or 3) under the terms of dual
9311 Public Domain/MIT License conditions described here, as they choose.
9312 
9313 The MIT License is about as close to Public Domain as a license can get, and is
9314 described in clear, concise terms at:
9315 
9316  http://en.wikipedia.org/wiki/MIT_License
9317 
9318 The full text of the MIT License follows:
9319 
9320 ========================================================================
9321 Copyright (c) 2007-2010 Baptiste Lepilleur
9322 
9323 Permission is hereby granted, free of charge, to any person
9324 obtaining a copy of this software and associated documentation
9325 files (the "Software"), to deal in the Software without
9326 restriction, including without limitation the rights to use, copy,
9327 modify, merge, publish, distribute, sublicense, and/or sell copies
9328 of the Software, and to permit persons to whom the Software is
9329 furnished to do so, subject to the following conditions:
9330 
9331 The above copyright notice and this permission notice shall be
9332 included in all copies or substantial portions of the Software.
9333 
9334 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
9335 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9336 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
9337 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
9338 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
9339 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
9340 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
9341 SOFTWARE.
9342 ========================================================================
9343 (END LICENSE TEXT)
9344 
9345 The MIT license is compatible with both the GPL and commercial
9346 software, affording one all of the rights of Public Domain with the
9347 minor nuisance of being required to keep the above copyright notice
9348 and license text in the source code. Note also that by accepting the
9349 Public Domain "license" you can re-license your copy using whatever
9350 license you like.
9351 
9352 */
9353 
9354 // //////////////////////////////////////////////////////////////////////
9355 // End of content of file: LICENSE
9356 // //////////////////////////////////////////////////////////////////////
9357 
9358 
9359 
9360 
9361 
9362 #ifdef PYNE_IS_AMALGAMATED
9363  #if !defined(JSON_IS_AMALGAMATION)
9364  #define JSON_IS_AMALGAMATION
9365  #endif
9366 #else
9367  #include "json.h"
9368 #endif
9369 
9370 
9371 // //////////////////////////////////////////////////////////////////////
9372 // Beginning of content of file: src/lib_json/json_tool.h
9373 // //////////////////////////////////////////////////////////////////////
9374 
9375 // Copyright 2007-2010 Baptiste Lepilleur
9376 // Distributed under MIT license, or public domain if desired and
9377 // recognized in your jurisdiction.
9378 // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
9379 
9380 #ifndef LIB_JSONCPP_JSON_TOOL_H_INCLUDED
9381 # define LIB_JSONCPP_JSON_TOOL_H_INCLUDED
9382 
9383 /* This header provides common string manipulation support, such as UTF-8,
9384  * portable conversion from/to string...
9385  *
9386  * It is an internal header that must not be exposed.
9387  */
9388 
9389 namespace Json {
9390 
9391 /// Converts a unicode code-point to UTF-8.
9392 static inline std::string
9393 codePointToUTF8(unsigned int cp) {
9394  std::string result;
9395 
9396  // based on description from http://en.wikipedia.org/wiki/UTF-8
9397 
9398  if (cp <= 0x7f) {
9399  result.resize(1);
9400  result[0] = static_cast<char>(cp);
9401  } else if (cp <= 0x7FF) {
9402  result.resize(2);
9403  result[1] = static_cast<char>(0x80 | (0x3f & cp));
9404  result[0] = static_cast<char>(0xC0 | (0x1f & (cp >> 6)));
9405  } else if (cp <= 0xFFFF) {
9406  result.resize(3);
9407  result[2] = static_cast<char>(0x80 | (0x3f & cp));
9408  result[1] = 0x80 | static_cast<char>((0x3f & (cp >> 6)));
9409  result[0] = 0xE0 | static_cast<char>((0xf & (cp >> 12)));
9410  } else if (cp <= 0x10FFFF) {
9411  result.resize(4);
9412  result[3] = static_cast<char>(0x80 | (0x3f & cp));
9413  result[2] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
9414  result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 12)));
9415  result[0] = static_cast<char>(0xF0 | (0x7 & (cp >> 18)));
9416  }
9417 
9418  return result;
9419 }
9420 
9421 
9422 /// Returns true if ch is a control character (in range [0,32[).
9423 static inline bool
9425  return ch > 0 && ch <= 0x1F;
9426 }
9427 
9428 
9429 enum {
9430  /// Constant that specify the size of the buffer that must be passed to uintToString.
9432 };
9433 
9434 // Defines a char buffer for use with uintToString().
9436 
9437 
9438 /** Converts an unsigned integer to string.
9439  * @param value Unsigned interger to convert to string
9440  * @param current Input/Output string buffer.
9441  * Must have at least uintToStringBufferSize chars free.
9442  */
9443 static inline void
9445  char *&current ) {
9446  *--current = 0;
9447  do {
9448  *--current = char(value % 10) + '0';
9449  value /= 10;
9450  }
9451  while ( value != 0 );
9452 }
9453 
9454 } // namespace Json {
9455 
9456 #endif // LIB_JSONCPP_JSON_TOOL_H_INCLUDED
9457 
9458 // //////////////////////////////////////////////////////////////////////
9459 // End of content of file: src/lib_json/json_tool.h
9460 // //////////////////////////////////////////////////////////////////////
9461 
9462 
9463 
9464 
9465 
9466 
9467 // //////////////////////////////////////////////////////////////////////
9468 // Beginning of content of file: src/lib_json/json_reader.cpp
9469 // //////////////////////////////////////////////////////////////////////
9470 
9471 // Copyright 2007-2010 Baptiste Lepilleur
9472 // Distributed under MIT license, or public domain if desired and
9473 // recognized in your jurisdiction.
9474 // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
9475 
9476 #if !defined(JSON_IS_AMALGAMATION)
9477 # include <json/reader.h>
9478 # include <json/value.h>
9479 # include "json_tool.h"
9480 #endif // if !defined(JSON_IS_AMALGAMATION)
9481 #include <utility>
9482 #include <cstdio>
9483 #include <cassert>
9484 #include <cstring>
9485 #include <iostream>
9486 #include <stdexcept>
9487 
9488 #if _MSC_VER >= 1400 // VC++ 8.0
9489 #pragma warning( disable : 4996 ) // disable warning about strdup being deprecated.
9490 #endif
9491 
9492 namespace Json {
9493 
9494 // Implementation of class Features
9495 // ////////////////////////////////
9496 
9497 Features::Features()
9498  : allowComments_( true )
9499  , strictRoot_( false ) {
9500 }
9501 
9502 
9503 Features
9505  return Features();
9506 }
9507 
9508 
9509 Features
9511  Features features;
9512  features.allowComments_ = false;
9513  features.strictRoot_ = true;
9514  return features;
9515 }
9516 
9517 // Implementation of class Reader
9518 // ////////////////////////////////
9519 
9520 
9521 static inline bool
9523  return c == c1 || c == c2 || c == c3 || c == c4;
9524 }
9525 
9526 static inline bool
9528  return c == c1 || c == c2 || c == c3 || c == c4 || c == c5;
9529 }
9530 
9531 
9532 static bool
9534  Reader::Location end ) {
9535  for ( ;begin < end; ++begin )
9536  if ( *begin == '\n' || *begin == '\r' )
9537  return true;
9538  return false;
9539 }
9540 
9541 
9542 // Class Reader
9543 // //////////////////////////////////////////////////////////////////
9544 
9546  : features_( Features::all() ) {
9547 }
9548 
9549 
9550 Reader::Reader( const Features &features )
9551  : features_( features ) {
9552 }
9553 
9554 
9555 bool
9556 Reader::parse( const std::string &document,
9557  Value &root,
9558  bool collectComments ) {
9559  document_ = document;
9560  const char *begin = document_.c_str();
9561  const char *end = begin + document_.length();
9562  return parse( begin, end, root, collectComments );
9563 }
9564 
9565 
9566 bool
9567 Reader::parse( std::istream& sin,
9568  Value &root,
9569  bool collectComments ) {
9570  //std::istream_iterator<char> begin(sin);
9571  //std::istream_iterator<char> end;
9572  // Those would allow streamed input from a file, if parse() were a
9573  // template function.
9574 
9575  // Since std::string is reference-counted, this at least does not
9576  // create an extra copy.
9577  std::string doc;
9578  std::getline(sin, doc, (char)EOF);
9579  return parse( doc, root, collectComments );
9580 }
9581 
9582 bool
9583 Reader::parse( const char *beginDoc, const char *endDoc,
9584  Value &root,
9585  bool collectComments ) {
9586  if ( !features_.allowComments_ ) {
9587  collectComments = false;
9588  }
9589 
9590  begin_ = beginDoc;
9591  end_ = endDoc;
9592  collectComments_ = collectComments;
9593  current_ = begin_;
9594  lastValueEnd_ = 0;
9595  lastValue_ = 0;
9596  commentsBefore_ = "";
9597  errors_.clear();
9598  while ( !nodes_.empty() )
9599  nodes_.pop();
9600  nodes_.push( &root );
9601 
9602  bool successful = readValue();
9603  Token token;
9604  skipCommentTokens( token );
9605  if ( collectComments_ && !commentsBefore_.empty() )
9606  root.setComment( commentsBefore_, commentAfter );
9607  if ( features_.strictRoot_ ) {
9608  if ( !root.isArray() && !root.isObject() ) {
9609  // Set error location to start of doc, ideally should be first token found in doc
9610  token.type_ = tokenError;
9611  token.start_ = beginDoc;
9612  token.end_ = endDoc;
9613  addError( "A valid JSON document must be either an array or an object value.",
9614  token );
9615  return false;
9616  }
9617  }
9618  return successful;
9619 }
9620 
9621 
9622 bool
9623 Reader::readValue() {
9624  Token token;
9625  skipCommentTokens( token );
9626  bool successful = true;
9627 
9628  if ( collectComments_ && !commentsBefore_.empty() ) {
9629  currentValue().setComment( commentsBefore_, commentBefore );
9630  commentsBefore_ = "";
9631  }
9632 
9633 
9634  switch ( token.type_ ) {
9635  case tokenObjectBegin:
9636  successful = readObject( token );
9637  break;
9638  case tokenArrayBegin:
9639  successful = readArray( token );
9640  break;
9641  case tokenNumber:
9642  successful = decodeNumber( token );
9643  break;
9644  case tokenString:
9645  successful = decodeString( token );
9646  break;
9647  case tokenTrue:
9648  currentValue() = true;
9649  break;
9650  case tokenFalse:
9651  currentValue() = false;
9652  break;
9653  case tokenNull:
9654  currentValue() = Value();
9655  break;
9656  default:
9657  return addError( "Syntax error: value, object or array expected.", token );
9658  }
9659 
9660  if ( collectComments_ ) {
9661  lastValueEnd_ = current_;
9662  lastValue_ = &currentValue();
9663  }
9664 
9665  return successful;
9666 }
9667 
9668 
9669 void
9670 Reader::skipCommentTokens( Token &token ) {
9671  if ( features_.allowComments_ ) {
9672  do {
9673  readToken( token );
9674  }
9675  while ( token.type_ == tokenComment );
9676  } else {
9677  readToken( token );
9678  }
9679 }
9680 
9681 
9682 bool
9683 Reader::expectToken( TokenType type, Token &token, const char *message ) {
9684  readToken( token );
9685  if ( token.type_ != type )
9686  return addError( message, token );
9687  return true;
9688 }
9689 
9690 
9691 bool
9692 Reader::readToken( Token &token ) {
9693  skipSpaces();
9694  token.start_ = current_;
9695  Char c = getNextChar();
9696  bool ok = true;
9697  switch ( c ) {
9698  case '{':
9699  token.type_ = tokenObjectBegin;
9700  break;
9701  case '}':
9702  token.type_ = tokenObjectEnd;
9703  break;
9704  case '[':
9705  token.type_ = tokenArrayBegin;
9706  break;
9707  case ']':
9708  token.type_ = tokenArrayEnd;
9709  break;
9710  case '"':
9711  token.type_ = tokenString;
9712  ok = readString();
9713  break;
9714  case '/':
9715  token.type_ = tokenComment;
9716  ok = readComment();
9717  break;
9718  case '0':
9719  case '1':
9720  case '2':
9721  case '3':
9722  case '4':
9723  case '5':
9724  case '6':
9725  case '7':
9726  case '8':
9727  case '9':
9728  case '-':
9729  token.type_ = tokenNumber;
9730  readNumber();
9731  break;
9732  case 't':
9733  token.type_ = tokenTrue;
9734  ok = match( "rue", 3 );
9735  break;
9736  case 'f':
9737  token.type_ = tokenFalse;
9738  ok = match( "alse", 4 );
9739  break;
9740  case 'n':
9741  token.type_ = tokenNull;
9742  ok = match( "ull", 3 );
9743  break;
9744  case ',':
9745  token.type_ = tokenArraySeparator;
9746  break;
9747  case ':':
9748  token.type_ = tokenMemberSeparator;
9749  break;
9750  case 0:
9751  token.type_ = tokenEndOfStream;
9752  break;
9753  default:
9754  ok = false;
9755  break;
9756  }
9757  if ( !ok )
9758  token.type_ = tokenError;
9759  token.end_ = current_;
9760  return true;
9761 }
9762 
9763 
9764 void
9765 Reader::skipSpaces() {
9766  while ( current_ != end_ ) {
9767  Char c = *current_;
9768  if ( c == ' ' || c == '\t' || c == '\r' || c == '\n' )
9769  ++current_;
9770  else
9771  break;
9772  }
9773 }
9774 
9775 
9776 bool
9777 Reader::match( Location pattern,
9778  int patternLength ) {
9779  if ( end_ - current_ < patternLength )
9780  return false;
9781  int index = patternLength;
9782  while ( index-- )
9783  if ( current_[index] != pattern[index] )
9784  return false;
9785  current_ += patternLength;
9786  return true;
9787 }
9788 
9789 
9790 bool
9791 Reader::readComment() {
9792  Location commentBegin = current_ - 1;
9793  Char c = getNextChar();
9794  bool successful = false;
9795  if ( c == '*' )
9796  successful = readCStyleComment();
9797  else if ( c == '/' )
9798  successful = readCppStyleComment();
9799  if ( !successful )
9800  return false;
9801 
9802  if ( collectComments_ ) {
9803  CommentPlacement placement = commentBefore;
9804  if ( lastValueEnd_ && !containsNewLine( lastValueEnd_, commentBegin ) )
9805  {
9806  if ( c != '*' || !containsNewLine( commentBegin, current_ ) )
9807  placement = commentAfterOnSameLine;
9808  }
9809 
9810  addComment( commentBegin, current_, placement );
9811  }
9812  return true;
9813 }
9814 
9815 
9816 void
9817 Reader::addComment( Location begin,
9818  Location end,
9819  CommentPlacement placement ) {
9820  assert( collectComments_ );
9821  if ( placement == commentAfterOnSameLine )
9822  {
9823  assert( lastValue_ != 0 );
9824  lastValue_->setComment( std::string( begin, end ), placement );
9825  } else {
9826  if ( !commentsBefore_.empty() )
9827  commentsBefore_ += "\n";
9828  commentsBefore_ += std::string( begin, end );
9829  }
9830 }
9831 
9832 
9833 bool
9834 Reader::readCStyleComment() {
9835  while ( current_ != end_ ) {
9836  Char c = getNextChar();
9837  if ( c == '*' && *current_ == '/' )
9838  break;
9839  }
9840  return getNextChar() == '/';
9841 }
9842 
9843 
9844 bool
9845 Reader::readCppStyleComment() {
9846  while ( current_ != end_ ) {
9847  Char c = getNextChar();
9848  if ( c == '\r' || c == '\n' )
9849  break;
9850  }
9851  return true;
9852 }
9853 
9854 
9855 void
9856 Reader::readNumber() {
9857  while ( current_ != end_ ) {
9858  if ( !(*current_ >= '0' && *current_ <= '9') &&
9859  !in( *current_, '.', 'e', 'E', '+', '-' ) )
9860  break;
9861  ++current_;
9862  }
9863 }
9864 
9865 bool
9866 Reader::readString() {
9867  Char c = 0;
9868  while ( current_ != end_ ) {
9869  c = getNextChar();
9870  if ( c == '\\' )
9871  getNextChar();
9872  else if ( c == '"' )
9873  break;
9874  }
9875  return c == '"';
9876 }
9877 
9878 
9879 bool
9880 Reader::readObject( Token &/*tokenStart*/ ) {
9881  Token tokenName;
9882  std::string name;
9883  currentValue() = Value( objectValue );
9884  while ( readToken( tokenName ) ) {
9885  bool initialTokenOk = true;
9886  while ( tokenName.type_ == tokenComment && initialTokenOk )
9887  initialTokenOk = readToken( tokenName );
9888  if ( !initialTokenOk )
9889  break;
9890  if ( tokenName.type_ == tokenObjectEnd && name.empty() ) // empty object
9891  return true;
9892  if ( tokenName.type_ != tokenString )
9893  break;
9894 
9895  name = "";
9896  if ( !decodeString( tokenName, name ) )
9897  return recoverFromError( tokenObjectEnd );
9898 
9899  Token colon;
9900  if ( !readToken( colon ) || colon.type_ != tokenMemberSeparator ) {
9901  return addErrorAndRecover( "Missing ':' after object member name",
9902  colon,
9903  tokenObjectEnd );
9904  }
9905  Value &value = currentValue()[ name ];
9906  nodes_.push( &value );
9907  bool ok = readValue();
9908  nodes_.pop();
9909  if ( !ok ) // error already set
9910  return recoverFromError( tokenObjectEnd );
9911 
9912  Token comma;
9913  if ( !readToken( comma )
9914  || ( comma.type_ != tokenObjectEnd &&
9915  comma.type_ != tokenArraySeparator &&
9916  comma.type_ != tokenComment ) ) {
9917  return addErrorAndRecover( "Missing ',' or '}' in object declaration",
9918  comma,
9919  tokenObjectEnd );
9920  }
9921  bool finalizeTokenOk = true;
9922  while ( comma.type_ == tokenComment &&
9923  finalizeTokenOk )
9924  finalizeTokenOk = readToken( comma );
9925  if ( comma.type_ == tokenObjectEnd )
9926  return true;
9927  }
9928  return addErrorAndRecover( "Missing '}' or object member name",
9929  tokenName,
9930  tokenObjectEnd );
9931 }
9932 
9933 
9934 bool
9935 Reader::readArray( Token &/*tokenStart*/ ) {
9936  currentValue() = Value( arrayValue );
9937  skipSpaces();
9938  if ( *current_ == ']' ) { // empty array
9939  Token endArray;
9940  readToken( endArray );
9941  return true;
9942  }
9943  int index = 0;
9944  for (;;) {
9945  Value &value = currentValue()[ index++ ];
9946  nodes_.push( &value );
9947  bool ok = readValue();
9948  nodes_.pop();
9949  if ( !ok ) // error already set
9950  return recoverFromError( tokenArrayEnd );
9951 
9952  Token token;
9953  // Accept Comment after last item in the array.
9954  ok = readToken( token );
9955  while ( token.type_ == tokenComment && ok ) {
9956  ok = readToken( token );
9957  }
9958  bool badTokenType = ( token.type_ != tokenArraySeparator &&
9959  token.type_ != tokenArrayEnd );
9960  if ( !ok || badTokenType ) {
9961  return addErrorAndRecover( "Missing ',' or ']' in array declaration",
9962  token,
9963  tokenArrayEnd );
9964  }
9965  if ( token.type_ == tokenArrayEnd )
9966  break;
9967  }
9968  return true;
9969 }
9970 
9971 
9972 bool
9973 Reader::decodeNumber( Token &token ) {
9974  bool isDouble = false;
9975  for ( Location inspect = token.start_; inspect != token.end_; ++inspect )
9976  {
9977  isDouble = isDouble
9978  || in( *inspect, '.', 'e', 'E', '+' )
9979  || ( *inspect == '-' && inspect != token.start_ );
9980  }
9981  if ( isDouble )
9982  return decodeDouble( token );
9983  // Attempts to parse the number as an integer. If the number is
9984  // larger than the maximum supported value of an integer then
9985  // we decode the number as a double.
9986  Location current = token.start_;
9987  bool isNegative = *current == '-';
9988  if ( isNegative )
9989  ++current;
9990  Value::LargestUInt maxIntegerValue = isNegative ? Value::LargestUInt(-Value::minLargestInt)
9991  : Value::maxLargestUInt;
9992  Value::LargestUInt threshold = maxIntegerValue / 10;
9993  Value::UInt lastDigitThreshold = Value::UInt( maxIntegerValue % 10 );
9994  assert( lastDigitThreshold >=0 && lastDigitThreshold <= 9 );
9995  Value::LargestUInt value = 0;
9996  while ( current < token.end_ ) {
9997  Char c = *current++;
9998  if ( c < '0' || c > '9' )
9999  return addError( "'" + std::string( token.start_, token.end_ ) + "' is not a number.", token );
10000  Value::UInt digit(c - '0');
10001  if ( value >= threshold ) {
10002  // If the current digit is not the last one, or if it is
10003  // greater than the last digit of the maximum integer value,
10004  // the parse the number as a double.
10005  if ( current != token.end_ || digit > lastDigitThreshold ) {
10006  return decodeDouble( token );
10007  }
10008  }
10009  value = value * 10 + digit;
10010  }
10011  if ( isNegative )
10012  currentValue() = -Value::LargestInt( value );
10013  else if ( value <= Value::LargestUInt(Value::maxInt) )
10014  currentValue() = Value::LargestInt( value );
10015  else
10016  currentValue() = value;
10017  return true;
10018 }
10019 
10020 
10021 bool
10022 Reader::decodeDouble( Token &token ) {
10023  double value = 0;
10024  const int bufferSize = 32;
10025  int count;
10026  int length = int(token.end_ - token.start_);
10027  if ( length <= bufferSize ) {
10028  Char buffer[bufferSize+1];
10029  memcpy( buffer, token.start_, length );
10030  buffer[length] = 0;
10031  count = sscanf( buffer, "%lf", &value );
10032  } else {
10033  std::string buffer( token.start_, token.end_ );
10034  count = sscanf( buffer.c_str(), "%lf", &value );
10035  }
10036 
10037  if ( count != 1 )
10038  return addError( "'" + std::string( token.start_, token.end_ ) + "' is not a number.", token );
10039  currentValue() = value;
10040  return true;
10041 }
10042 
10043 
10044 bool
10045 Reader::decodeString( Token &token ) {
10046  std::string decoded;
10047  if ( !decodeString( token, decoded ) )
10048  return false;
10049  currentValue() = decoded;
10050  return true;
10051 }
10052 
10053 
10054 bool
10055 Reader::decodeString( Token &token, std::string &decoded ) {
10056  decoded.reserve( token.end_ - token.start_ - 2 );
10057  Location current = token.start_ + 1; // skip '"'
10058  Location end = token.end_ - 1; // do not include '"'
10059  while ( current != end ) {
10060  Char c = *current++;
10061  if ( c == '"' )
10062  break;
10063  else if ( c == '\\' ) {
10064  if ( current == end )
10065  return addError( "Empty escape sequence in string", token, current );
10066  Char escape = *current++;
10067  switch ( escape ) {
10068  case '"': decoded += '"'; break;
10069  case '/': decoded += '/'; break;
10070  case '\\': decoded += '\\'; break;
10071  case 'b': decoded += '\b'; break;
10072  case 'f': decoded += '\f'; break;
10073  case 'n': decoded += '\n'; break;
10074  case 'r': decoded += '\r'; break;
10075  case 't': decoded += '\t'; break;
10076  case 'u': {
10077  unsigned int unicode;
10078  if ( !decodeUnicodeCodePoint( token, current, end, unicode ) )
10079  return false;
10080  decoded += codePointToUTF8(unicode);
10081  }
10082  break;
10083  default:
10084  return addError( "Bad escape sequence in string", token, current );
10085  }
10086  }
10087  else {
10088  decoded += c;
10089  }
10090  }
10091  return true;
10092 }
10093 
10094 bool
10095 Reader::decodeUnicodeCodePoint( Token &token,
10096  Location &current,
10097  Location end,
10098  unsigned int &unicode ) {
10099 
10100  if ( !decodeUnicodeEscapeSequence( token, current, end, unicode ) )
10101  return false;
10102  if (unicode >= 0xD800 && unicode <= 0xDBFF) {
10103  // surrogate pairs
10104  if (end - current < 6)
10105  return addError( "additional six characters expected to parse unicode surrogate pair.", token, current );
10106  unsigned int surrogatePair;
10107  if (*(current++) == '\\' && *(current++)== 'u') {
10108  if (decodeUnicodeEscapeSequence( token, current, end, surrogatePair )) {
10109  unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
10110  } else
10111  return false;
10112  } else
10113  return addError( "expecting another \\u token to begin the second half of a unicode surrogate pair", token, current );
10114  }
10115  return true;
10116 }
10117 
10118 bool
10119 Reader::decodeUnicodeEscapeSequence( Token &token,
10120  Location &current,
10121  Location end,
10122  unsigned int &unicode ) {
10123  if ( end - current < 4 )
10124  return addError( "Bad unicode escape sequence in string: four digits expected.", token, current );
10125  unicode = 0;
10126  for ( int index =0; index < 4; ++index ) {
10127  Char c = *current++;
10128  unicode *= 16;
10129  if ( c >= '0' && c <= '9' )
10130  unicode += c - '0';
10131  else if ( c >= 'a' && c <= 'f' )
10132  unicode += c - 'a' + 10;
10133  else if ( c >= 'A' && c <= 'F' )
10134  unicode += c - 'A' + 10;
10135  else
10136  return addError( "Bad unicode escape sequence in string: hexadecimal digit expected.", token, current );
10137  }
10138  return true;
10139 }
10140 
10141 
10142 bool
10143 Reader::addError( const std::string &message,
10144  Token &token,
10145  Location extra ) {
10146  ErrorInfo info;
10147  info.token_ = token;
10148  info.message_ = message;
10149  info.extra_ = extra;
10150  errors_.push_back( info );
10151  return false;
10152 }
10153 
10154 
10155 bool
10156 Reader::recoverFromError( TokenType skipUntilToken ) {
10157  int errorCount = int(errors_.size());
10158  Token skip;
10159  for (;;) {
10160  if ( !readToken(skip) )
10161  errors_.resize( errorCount ); // discard errors caused by recovery
10162  if ( skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream )
10163  break;
10164  }
10165  errors_.resize( errorCount );
10166  return false;
10167 }
10168 
10169 
10170 bool
10171 Reader::addErrorAndRecover( const std::string &message,
10172  Token &token,
10173  TokenType skipUntilToken ) {
10174  addError( message, token );
10175  return recoverFromError( skipUntilToken );
10176 }
10177 
10178 
10179 Value &
10180 Reader::currentValue() {
10181  return *(nodes_.top());
10182 }
10183 
10184 
10185 Reader::Char
10186 Reader::getNextChar() {
10187  if ( current_ == end_ )
10188  return 0;
10189  return *current_++;
10190 }
10191 
10192 
10193 void
10194 Reader::getLocationLineAndColumn( Location location,
10195  int &line,
10196  int &column ) const {
10197  Location current = begin_;
10198  Location lastLineStart = current;
10199  line = 0;
10200  while ( current < location && current != end_ ) {
10201  Char c = *current++;
10202  if ( c == '\r' ) {
10203  if ( *current == '\n' )
10204  ++current;
10205  lastLineStart = current;
10206  ++line;
10207  } else if ( c == '\n' ) {
10208  lastLineStart = current;
10209  ++line;
10210  }
10211  }
10212  // column & line start at 1
10213  column = int(location - lastLineStart) + 1;
10214  ++line;
10215 }
10216 
10217 
10218 std::string
10219 Reader::getLocationLineAndColumn( Location location ) const {
10220  int line, column;
10221  getLocationLineAndColumn( location, line, column );
10222  char buffer[18+16+16+1];
10223  sprintf( buffer, "Line %d, Column %d", line, column );
10224  return buffer;
10225 }
10226 
10227 
10228 // Deprecated. Preserved for backward compatibility
10229 std::string
10231  return getFormattedErrorMessages();
10232 }
10233 
10234 
10235 std::string
10237  std::string formattedMessage;
10238  for ( Errors::const_iterator itError = errors_.begin();
10239  itError != errors_.end();
10240  ++itError ) {
10241  const ErrorInfo &error = *itError;
10242  formattedMessage += "* " + getLocationLineAndColumn( error.token_.start_ ) + "\n";
10243  formattedMessage += " " + error.message_ + "\n";
10244  if ( error.extra_ )
10245  formattedMessage += "See " + getLocationLineAndColumn( error.extra_ ) + " for detail.\n";
10246  }
10247  return formattedMessage;
10248 }
10249 
10250 
10251 std::istream& operator>>( std::istream &sin, Value &root ) {
10252  Json::Reader reader;
10253  bool ok = reader.parse(sin, root, true);
10254  //JSON_ASSERT( ok );
10255  if (!ok) throw std::runtime_error(reader.getFormattedErrorMessages());
10256  return sin;
10257 }
10258 
10259 
10260 } // namespace Json
10261 
10262 // //////////////////////////////////////////////////////////////////////
10263 // End of content of file: src/lib_json/json_reader.cpp
10264 // //////////////////////////////////////////////////////////////////////
10265 
10266 
10267 
10268 
10269 
10270 
10271 // //////////////////////////////////////////////////////////////////////
10272 // Beginning of content of file: src/lib_json/json_batchallocator.h
10273 // //////////////////////////////////////////////////////////////////////
10274 
10275 // Copyright 2007-2010 Baptiste Lepilleur
10276 // Distributed under MIT license, or public domain if desired and
10277 // recognized in your jurisdiction.
10278 // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
10279 
10280 #ifndef JSONCPP_BATCHALLOCATOR_H_INCLUDED
10281 # define JSONCPP_BATCHALLOCATOR_H_INCLUDED
10282 
10283 # include <stdlib.h>
10284 # include <assert.h>
10285 
10286 # ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
10287 
10288 namespace Json {
10289 
10290 /* Fast memory allocator.
10291  *
10292  * This memory allocator allocates memory for a batch of object (specified by
10293  * the page size, the number of object in each page).
10294  *
10295  * It does not allow the destruction of a single object. All the allocated objects
10296  * can be destroyed at once. The memory can be either released or reused for future
10297  * allocation.
10298  *
10299  * The in-place new operator must be used to construct the object using the pointer
10300  * returned by allocate.
10301  */
10302 template<typename AllocatedType
10303  ,const unsigned int objectPerAllocation>
10305 public:
10306  typedef AllocatedType Type;
10307 
10308  BatchAllocator( unsigned int objectsPerPage = 255 )
10309  : freeHead_( 0 )
10310  , objectsPerPage_( objectsPerPage ) {
10311 // printf( "Size: %d => %s\n", sizeof(AllocatedType), typeid(AllocatedType).name() );
10312  assert( sizeof(AllocatedType) * objectPerAllocation >= sizeof(AllocatedType *) ); // We must be able to store a slist in the object free space.
10313  assert( objectsPerPage >= 16 );
10314  batches_ = allocateBatch( 0 ); // allocated a dummy page
10315  currentBatch_ = batches_;
10316  }
10317 
10319  for ( BatchInfo *batch = batches_; batch; ) {
10320  BatchInfo *nextBatch = batch->next_;
10321  free( batch );
10322  batch = nextBatch;
10323  }
10324  }
10325 
10326  /// allocate space for an array of objectPerAllocation object.
10327  /// @warning it is the responsability of the caller to call objects constructors.
10328  AllocatedType *allocate() {
10329  if ( freeHead_ ) { // returns node from free list.
10330  AllocatedType *object = freeHead_;
10331  freeHead_ = *(AllocatedType **)object;
10332  return object;
10333  }
10334  if ( currentBatch_->used_ == currentBatch_->end_ ) {
10335  currentBatch_ = currentBatch_->next_;
10336  while ( currentBatch_ && currentBatch_->used_ == currentBatch_->end_ )
10337  currentBatch_ = currentBatch_->next_;
10338 
10339  if ( !currentBatch_ ) { // no free batch found, allocate a new one
10340  currentBatch_ = allocateBatch( objectsPerPage_ );
10341  currentBatch_->next_ = batches_; // insert at the head of the list
10342  batches_ = currentBatch_;
10343  }
10344  }
10345  AllocatedType *allocated = currentBatch_->used_;
10346  currentBatch_->used_ += objectPerAllocation;
10347  return allocated;
10348  }
10349 
10350  /// Release the object.
10351  /// @warning it is the responsability of the caller to actually destruct the object.
10352  void release( AllocatedType *object ) {
10353  assert( object != 0 );
10354  *(AllocatedType **)object = freeHead_;
10355  freeHead_ = object;
10356  }
10357 
10358 private:
10359  struct BatchInfo {
10360  BatchInfo *next_;
10361  AllocatedType *used_;
10362  AllocatedType *end_;
10363  AllocatedType buffer_[objectPerAllocation];
10364  };
10365 
10366  // disabled copy constructor and assignement operator.
10367  BatchAllocator( const BatchAllocator & );
10368  void operator =( const BatchAllocator &);
10369 
10370  static BatchInfo *allocateBatch( unsigned int objectsPerPage ) {
10371  const unsigned int mallocSize = sizeof(BatchInfo) - sizeof(AllocatedType)* objectPerAllocation
10372  + sizeof(AllocatedType) * objectPerAllocation * objectsPerPage;
10373  BatchInfo *batch = static_cast<BatchInfo*>( malloc( mallocSize ) );
10374  batch->next_ = 0;
10375  batch->used_ = batch->buffer_;
10376  batch->end_ = batch->buffer_ + objectsPerPage;
10377  return batch;
10378  }
10379 
10380  BatchInfo *batches_;
10381  BatchInfo *currentBatch_;
10382  /// Head of a single linked list within the allocated space of freeed object
10383  AllocatedType *freeHead_;
10384  unsigned int objectsPerPage_;
10385 };
10386 
10387 
10388 } // namespace Json
10389 
10390 # endif // ifndef JSONCPP_DOC_INCLUDE_IMPLEMENTATION
10391 
10392 #endif // JSONCPP_BATCHALLOCATOR_H_INCLUDED
10393 
10394 
10395 // //////////////////////////////////////////////////////////////////////
10396 // End of content of file: src/lib_json/json_batchallocator.h
10397 // //////////////////////////////////////////////////////////////////////
10398 
10399 
10400 
10401 
10402 
10403 
10404 // //////////////////////////////////////////////////////////////////////
10405 // Beginning of content of file: src/lib_json/json_valueiterator.inl
10406 // //////////////////////////////////////////////////////////////////////
10407 
10408 // Copyright 2007-2010 Baptiste Lepilleur
10409 // Distributed under MIT license, or public domain if desired and
10410 // recognized in your jurisdiction.
10411 // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
10412 
10413 // included by json_value.cpp
10414 
10415 namespace Json {
10416 
10417 // //////////////////////////////////////////////////////////////////
10418 // //////////////////////////////////////////////////////////////////
10419 // //////////////////////////////////////////////////////////////////
10420 // class ValueIteratorBase
10421 // //////////////////////////////////////////////////////////////////
10422 // //////////////////////////////////////////////////////////////////
10423 // //////////////////////////////////////////////////////////////////
10424 
10426 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10427  : current_()
10428  , isNull_( true ) {
10429 }
10430 #else
10431  : isArray_( true )
10432  , isNull_( true ) {
10433  iterator_.array_ = ValueInternalArray::IteratorState();
10434 }
10435 #endif
10436 
10437 
10438 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10439 ValueIteratorBase::ValueIteratorBase( const Value::ObjectValues::iterator &current )
10440  : current_( current )
10441  , isNull_( false ) {
10442 }
10443 #else
10444 ValueIteratorBase::ValueIteratorBase( const ValueInternalArray::IteratorState &state )
10445  : isArray_( true ) {
10446  iterator_.array_ = state;
10447 }
10448 
10449 
10450 ValueIteratorBase::ValueIteratorBase( const ValueInternalMap::IteratorState &state )
10451  : isArray_( false ) {
10452  iterator_.map_ = state;
10453 }
10454 #endif
10455 
10456 Value &
10458 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10459  return current_->second;
10460 #else
10461  if ( isArray_ )
10462  return ValueInternalArray::dereference( iterator_.array_ );
10463  return ValueInternalMap::value( iterator_.map_ );
10464 #endif
10465 }
10466 
10467 
10468 void
10470 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10471  ++current_;
10472 #else
10473  if ( isArray_ )
10474  ValueInternalArray::increment( iterator_.array_ );
10475  ValueInternalMap::increment( iterator_.map_ );
10476 #endif
10477 }
10478 
10479 
10480 void
10482 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10483  --current_;
10484 #else
10485  if ( isArray_ )
10486  ValueInternalArray::decrement( iterator_.array_ );
10487  ValueInternalMap::decrement( iterator_.map_ );
10488 #endif
10489 }
10490 
10491 
10494 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10495 # ifdef JSON_USE_CPPTL_SMALLMAP
10496  return current_ - other.current_;
10497 # else
10498  // Iterator for null value are initialized using the default
10499  // constructor, which initialize current_ to the default
10500  // std::map::iterator. As begin() and end() are two instance
10501  // of the default std::map::iterator, they can not be compared.
10502  // To allow this, we handle this comparison specifically.
10503  if ( isNull_ && other.isNull_ ) {
10504  return 0;
10505  }
10506 
10507 
10508  // Usage of std::distance is not portable (does not compile with Sun Studio 12 RogueWave STL,
10509  // which is the one used by default).
10510  // Using a portable hand-made version for non random iterator instead:
10511  // return difference_type( std::distance( current_, other.current_ ) );
10512  difference_type myDistance = 0;
10513  for ( Value::ObjectValues::iterator it = current_; it != other.current_; ++it ) {
10514  ++myDistance;
10515  }
10516  return myDistance;
10517 # endif
10518 #else
10519  if ( isArray_ )
10520  return ValueInternalArray::distance( iterator_.array_, other.iterator_.array_ );
10521  return ValueInternalMap::distance( iterator_.map_, other.iterator_.map_ );
10522 #endif
10523 }
10524 
10525 
10526 bool
10527 ValueIteratorBase::isEqual( const SelfType &other ) const {
10528 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10529  if ( isNull_ ) {
10530  return other.isNull_;
10531  }
10532  return current_ == other.current_;
10533 #else
10534  if ( isArray_ )
10535  return ValueInternalArray::equals( iterator_.array_, other.iterator_.array_ );
10536  return ValueInternalMap::equals( iterator_.map_, other.iterator_.map_ );
10537 #endif
10538 }
10539 
10540 
10541 void
10543 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10544  current_ = other.current_;
10545 #else
10546  if ( isArray_ )
10547  iterator_.array_ = other.iterator_.array_;
10548  iterator_.map_ = other.iterator_.map_;
10549 #endif
10550 }
10551 
10552 
10553 Value
10555 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10556  const Value::CZString czstring = (*current_).first;
10557  if ( czstring.c_str() ) {
10558  if ( czstring.isStaticString() )
10559  return Value( StaticString( czstring.c_str() ) );
10560  return Value( czstring.c_str() );
10561  }
10562  return Value( czstring.index() );
10563 #else
10564  if ( isArray_ )
10565  return Value( ValueInternalArray::indexOf( iterator_.array_ ) );
10566  bool isStatic;
10567  const char *memberName = ValueInternalMap::key( iterator_.map_, isStatic );
10568  if ( isStatic )
10569  return Value( StaticString( memberName ) );
10570  return Value( memberName );
10571 #endif
10572 }
10573 
10574 
10575 UInt
10577 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10578  const Value::CZString czstring = (*current_).first;
10579  if ( !czstring.c_str() )
10580  return czstring.index();
10581  return Value::UInt( -1 );
10582 #else
10583  if ( isArray_ )
10584  return Value::UInt( ValueInternalArray::indexOf( iterator_.array_ ) );
10585  return Value::UInt( -1 );
10586 #endif
10587 }
10588 
10589 
10590 const char *
10592 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10593  const char *name = (*current_).first.c_str();
10594  return name ? name : "";
10595 #else
10596  if ( !isArray_ )
10597  return ValueInternalMap::key( iterator_.map_ );
10598  return "";
10599 #endif
10600 }
10601 
10602 
10603 // //////////////////////////////////////////////////////////////////
10604 // //////////////////////////////////////////////////////////////////
10605 // //////////////////////////////////////////////////////////////////
10606 // class ValueConstIterator
10607 // //////////////////////////////////////////////////////////////////
10608 // //////////////////////////////////////////////////////////////////
10609 // //////////////////////////////////////////////////////////////////
10610 
10612 }
10613 
10614 
10615 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10616 ValueConstIterator::ValueConstIterator( const Value::ObjectValues::iterator &current )
10617  : ValueIteratorBase( current ) {
10618 }
10619 #else
10620 ValueConstIterator::ValueConstIterator( const ValueInternalArray::IteratorState &state )
10621  : ValueIteratorBase( state ) {
10622 }
10623 
10624 ValueConstIterator::ValueConstIterator( const ValueInternalMap::IteratorState &state )
10625  : ValueIteratorBase( state ) {
10626 }
10627 #endif
10628 
10629 ValueConstIterator &
10631  copy( other );
10632  return *this;
10633 }
10634 
10635 
10636 // //////////////////////////////////////////////////////////////////
10637 // //////////////////////////////////////////////////////////////////
10638 // //////////////////////////////////////////////////////////////////
10639 // class ValueIterator
10640 // //////////////////////////////////////////////////////////////////
10641 // //////////////////////////////////////////////////////////////////
10642 // //////////////////////////////////////////////////////////////////
10643 
10645 }
10646 
10647 
10648 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10649 ValueIterator::ValueIterator( const Value::ObjectValues::iterator &current )
10650  : ValueIteratorBase( current ) {
10651 }
10652 #else
10653 ValueIterator::ValueIterator( const ValueInternalArray::IteratorState &state )
10654  : ValueIteratorBase( state ) {
10655 }
10656 
10657 ValueIterator::ValueIterator( const ValueInternalMap::IteratorState &state )
10658  : ValueIteratorBase( state ) {
10659 }
10660 #endif
10661 
10663  : ValueIteratorBase( other ) {
10664 }
10665 
10667  : ValueIteratorBase( other ) {
10668 }
10669 
10670 ValueIterator &
10672  copy( other );
10673  return *this;
10674 }
10675 
10676 } // namespace Json
10677 
10678 // //////////////////////////////////////////////////////////////////////
10679 // End of content of file: src/lib_json/json_valueiterator.inl
10680 // //////////////////////////////////////////////////////////////////////
10681 
10682 
10683 
10684 
10685 
10686 
10687 // //////////////////////////////////////////////////////////////////////
10688 // Beginning of content of file: src/lib_json/json_value.cpp
10689 // //////////////////////////////////////////////////////////////////////
10690 
10691 // Copyright 2007-2010 Baptiste Lepilleur
10692 // Distributed under MIT license, or public domain if desired and
10693 // recognized in your jurisdiction.
10694 // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
10695 
10696 #if !defined(JSON_IS_AMALGAMATION)
10697 # include <json/value.h>
10698 # include <json/writer.h>
10699 # ifndef JSON_USE_SIMPLE_INTERNAL_ALLOCATOR
10700 # include "json_batchallocator.h"
10701 # endif // #ifndef JSON_USE_SIMPLE_INTERNAL_ALLOCATOR
10702 #endif // if !defined(JSON_IS_AMALGAMATION)
10703 #include <iostream>
10704 #include <utility>
10705 #include <stdexcept>
10706 #include <cstring>
10707 #include <cassert>
10708 #ifdef JSON_USE_CPPTL
10709 # include <cpptl/conststring.h>
10710 #endif
10711 #include <cstddef> // size_t
10712 
10713 #define JSON_ASSERT_UNREACHABLE assert( false )
10714 #define JSON_ASSERT( condition ) assert( condition ); // @todo <= change this into an exception throw
10715 #define JSON_FAIL_MESSAGE( message ) throw std::runtime_error( message );
10716 #define JSON_ASSERT_MESSAGE( condition, message ) if (!( condition )) JSON_FAIL_MESSAGE( message )
10717 
10718 namespace Json {
10719 
10720 const Value Value::null;
10721 const Int Value::minInt = Int( ~(UInt(-1)/2) );
10722 const Int Value::maxInt = Int( UInt(-1)/2 );
10723 const UInt Value::maxUInt = UInt(-1);
10724 const Int64 Value::minInt64 = Int64( ~(UInt64(-1)/2) );
10725 const Int64 Value::maxInt64 = Int64( UInt64(-1)/2 );
10726 const UInt64 Value::maxUInt64 = UInt64(-1);
10730 
10731 
10732 /// Unknown size marker
10733 static const unsigned int unknown = (unsigned)-1;
10734 
10735 
10736 /** Duplicates the specified string value.
10737  * @param value Pointer to the string to duplicate. Must be zero-terminated if
10738  * length is "unknown".
10739  * @param length Length of the value. if equals to unknown, then it will be
10740  * computed using strlen(value).
10741  * @return Pointer on the duplicate instance of string.
10742  */
10743 static inline char *
10744 duplicateStringValue( const char *value,
10745  unsigned int length = unknown ) {
10746  if ( length == unknown )
10747  length = (unsigned int)strlen(value);
10748  char *newString = static_cast<char *>( malloc( length + 1 ) );
10749  JSON_ASSERT_MESSAGE( newString != 0, "Failed to allocate string value buffer" );
10750  memcpy( newString, value, length );
10751  newString[length] = 0;
10752  return newString;
10753 }
10754 
10755 
10756 /** Free the string duplicated by duplicateStringValue().
10757  */
10758 static inline void
10759 releaseStringValue( char *value ) {
10760  if ( value )
10761  free( value );
10762 }
10763 
10764 } // namespace Json
10765 
10766 
10767 // //////////////////////////////////////////////////////////////////
10768 // //////////////////////////////////////////////////////////////////
10769 // //////////////////////////////////////////////////////////////////
10770 // ValueInternals...
10771 // //////////////////////////////////////////////////////////////////
10772 // //////////////////////////////////////////////////////////////////
10773 // //////////////////////////////////////////////////////////////////
10774 #if !defined(JSON_IS_AMALGAMATION)
10775 # ifdef JSON_VALUE_USE_INTERNAL_MAP
10776 # include "json_internalarray.inl"
10777 # include "json_internalmap.inl"
10778 # endif // JSON_VALUE_USE_INTERNAL_MAP
10779 
10780 # include "json_valueiterator.inl"
10781 #endif // if !defined(JSON_IS_AMALGAMATION)
10782 
10783 namespace Json {
10784 
10785 // //////////////////////////////////////////////////////////////////
10786 // //////////////////////////////////////////////////////////////////
10787 // //////////////////////////////////////////////////////////////////
10788 // class Value::CommentInfo
10789 // //////////////////////////////////////////////////////////////////
10790 // //////////////////////////////////////////////////////////////////
10791 // //////////////////////////////////////////////////////////////////
10792 
10793 
10794 Value::CommentInfo::CommentInfo()
10795  : comment_( 0 ) {
10796 }
10797 
10798 Value::CommentInfo::~CommentInfo() {
10799  if ( comment_ )
10800  releaseStringValue( comment_ );
10801 }
10802 
10803 
10804 void
10805 Value::CommentInfo::setComment( const char *text ) {
10806  if ( comment_ )
10807  releaseStringValue( comment_ );
10808  JSON_ASSERT( text != 0 );
10809  JSON_ASSERT_MESSAGE( text[0]=='\0' || text[0]=='/', "Comments must start with /");
10810  // It seems that /**/ style comments are acceptable as well.
10811  comment_ = duplicateStringValue( text );
10812 }
10813 
10814 
10815 // //////////////////////////////////////////////////////////////////
10816 // //////////////////////////////////////////////////////////////////
10817 // //////////////////////////////////////////////////////////////////
10818 // class Value::CZString
10819 // //////////////////////////////////////////////////////////////////
10820 // //////////////////////////////////////////////////////////////////
10821 // //////////////////////////////////////////////////////////////////
10822 # ifndef JSON_VALUE_USE_INTERNAL_MAP
10823 
10824 // Notes: index_ indicates if the string was allocated when
10825 // a string is stored.
10826 
10827 Value::CZString::CZString( ArrayIndex index )
10828  : cstr_( 0 )
10829  , index_( index ) {
10830 }
10831 
10832 Value::CZString::CZString( const char *cstr, DuplicationPolicy allocate )
10833  : cstr_( allocate == duplicate ? duplicateStringValue(cstr)
10834  : cstr )
10835  , index_( allocate ) {
10836 }
10837 
10838 Value::CZString::CZString( const CZString &other )
10839 : cstr_( other.index_ != noDuplication && other.cstr_ != 0
10840  ? duplicateStringValue( other.cstr_ )
10841  : other.cstr_ )
10842  , index_( other.cstr_ ? (other.index_ == noDuplication ? noDuplication : duplicate)
10843  : other.index_ ) {
10844 }
10845 
10846 Value::CZString::~CZString() {
10847  if ( cstr_ && index_ == duplicate )
10848  releaseStringValue( const_cast<char *>( cstr_ ) );
10849 }
10850 
10851 void
10852 Value::CZString::swap( CZString &other ) {
10853  std::swap( cstr_, other.cstr_ );
10854  std::swap( index_, other.index_ );
10855 }
10856 
10857 Value::CZString &
10858 Value::CZString::operator =( const CZString &other ) {
10859  CZString temp( other );
10860  swap( temp );
10861  return *this;
10862 }
10863 
10864 bool
10865 Value::CZString::operator<( const CZString &other ) const {
10866  if ( cstr_ )
10867  return strcmp( cstr_, other.cstr_ ) < 0;
10868  return index_ < other.index_;
10869 }
10870 
10871 bool
10872 Value::CZString::operator==( const CZString &other ) const {
10873  if ( cstr_ )
10874  return strcmp( cstr_, other.cstr_ ) == 0;
10875  return index_ == other.index_;
10876 }
10877 
10878 
10879 ArrayIndex
10880 Value::CZString::index() const {
10881  return index_;
10882 }
10883 
10884 
10885 const char *
10886 Value::CZString::c_str() const {
10887  return cstr_;
10888 }
10889 
10890 bool
10891 Value::CZString::isStaticString() const {
10892  return index_ == noDuplication;
10893 }
10894 
10895 #endif // ifndef JSON_VALUE_USE_INTERNAL_MAP
10896 
10897 
10898 // //////////////////////////////////////////////////////////////////
10899 // //////////////////////////////////////////////////////////////////
10900 // //////////////////////////////////////////////////////////////////
10901 // class Value::Value
10902 // //////////////////////////////////////////////////////////////////
10903 // //////////////////////////////////////////////////////////////////
10904 // //////////////////////////////////////////////////////////////////
10905 
10906 /*! \internal Default constructor initialization must be equivalent to:
10907  * memset( this, 0, sizeof(Value) )
10908  * This optimization is used in ValueInternalMap fast allocator.
10909  */
10910 Value::Value( ValueType type )
10911  : type_( type )
10912  , allocated_( 0 )
10913  , comments_( 0 )
10914 # ifdef JSON_VALUE_USE_INTERNAL_MAP
10915  , itemIsUsed_( 0 )
10916 #endif
10917 {
10918  switch ( type ) {
10919  case nullValue:
10920  break;
10921  case intValue:
10922  case uintValue:
10923  value_.int_ = 0;
10924  break;
10925  case realValue:
10926  value_.real_ = 0.0;
10927  break;
10928  case stringValue:
10929  value_.string_ = 0;
10930  break;
10931 #ifndef JSON_VALUE_USE_INTERNAL_MAP
10932  case arrayValue:
10933  case objectValue:
10934  value_.map_ = new ObjectValues();
10935  break;
10936 #else
10937  case arrayValue:
10938  value_.array_ = arrayAllocator()->newArray();
10939  break;
10940  case objectValue:
10941  value_.map_ = mapAllocator()->newMap();
10942  break;
10943 #endif
10944  case booleanValue:
10945  value_.bool_ = false;
10946  break;
10947  default:
10949  }
10950 }
10951 
10952 
10953 #if defined(JSON_HAS_INT64)
10955  : type_( uintValue )
10956  , comments_( 0 )
10957 # ifdef JSON_VALUE_USE_INTERNAL_MAP
10958  , itemIsUsed_( 0 )
10959 #endif
10960 {
10961  value_.uint_ = value;
10962 }
10963 
10965  : type_( intValue )
10966  , comments_( 0 )
10967 # ifdef JSON_VALUE_USE_INTERNAL_MAP
10968  , itemIsUsed_( 0 )
10969 #endif
10970 {
10971  value_.int_ = value;
10972 }
10973 
10974 #endif // if defined(JSON_HAS_INT64)
10975 
10976 
10978  : type_( intValue )
10979  , comments_( 0 )
10980 # ifdef JSON_VALUE_USE_INTERNAL_MAP
10981  , itemIsUsed_( 0 )
10982 #endif
10983 {
10984  value_.int_ = value;
10985 }
10986 
10987 
10989  : type_( uintValue )
10990  , comments_( 0 )
10991 # ifdef JSON_VALUE_USE_INTERNAL_MAP
10992  , itemIsUsed_( 0 )
10993 #endif
10994 {
10995  value_.uint_ = value;
10996 }
10997 
10998 Value::Value( double value )
10999  : type_( realValue )
11000  , comments_( 0 )
11001 # ifdef JSON_VALUE_USE_INTERNAL_MAP
11002  , itemIsUsed_( 0 )
11003 #endif
11004 {
11005  value_.real_ = value;
11006 }
11007 
11008 Value::Value( const char *value )
11009  : type_( stringValue )
11010  , allocated_( true )
11011  , comments_( 0 )
11012 # ifdef JSON_VALUE_USE_INTERNAL_MAP
11013  , itemIsUsed_( 0 )
11014 #endif
11015 {
11016  value_.string_ = duplicateStringValue( value );
11017 }
11018 
11019 
11020 Value::Value( const char *beginValue,
11021  const char *endValue )
11022  : type_( stringValue )
11023  , allocated_( true )
11024  , comments_( 0 )
11025 # ifdef JSON_VALUE_USE_INTERNAL_MAP
11026  , itemIsUsed_( 0 )
11027 #endif
11028 {
11029  value_.string_ = duplicateStringValue( beginValue,
11030  (unsigned int)(endValue - beginValue) );
11031 }
11032 
11033 
11034 Value::Value( const std::string &value )
11035  : type_( stringValue )
11036  , allocated_( true )
11037  , comments_( 0 )
11038 # ifdef JSON_VALUE_USE_INTERNAL_MAP
11039  , itemIsUsed_( 0 )
11040 #endif
11041 {
11042  value_.string_ = duplicateStringValue( value.c_str(),
11043  (unsigned int)value.length() );
11044 
11045 }
11046 
11048  : type_( stringValue )
11049  , allocated_( false )
11050  , comments_( 0 )
11051 # ifdef JSON_VALUE_USE_INTERNAL_MAP
11052  , itemIsUsed_( 0 )
11053 #endif
11054 {
11055  value_.string_ = const_cast<char *>( value.c_str() );
11056 }
11057 
11058 
11059 # ifdef JSON_USE_CPPTL
11060 Value::Value( const CppTL::ConstString &value )
11061  : type_( stringValue )
11062  , allocated_( true )
11063  , comments_( 0 )
11064 # ifdef JSON_VALUE_USE_INTERNAL_MAP
11065  , itemIsUsed_( 0 )
11066 #endif
11067 {
11068  value_.string_ = duplicateStringValue( value, value.length() );
11069 }
11070 # endif
11071 
11072 Value::Value( bool value )
11073  : type_( booleanValue )
11074  , comments_( 0 )
11075 # ifdef JSON_VALUE_USE_INTERNAL_MAP
11076  , itemIsUsed_( 0 )
11077 #endif
11078 {
11079  value_.bool_ = value;
11080 }
11081 
11082 
11083 Value::Value( const Value &other )
11084  : type_( other.type_ )
11085  , comments_( 0 )
11086 # ifdef JSON_VALUE_USE_INTERNAL_MAP
11087  , itemIsUsed_( 0 )
11088 #endif
11089 {
11090  switch ( type_ ) {
11091  case nullValue:
11092  case intValue:
11093  case uintValue:
11094  case realValue:
11095  case booleanValue:
11096  value_ = other.value_;
11097  break;
11098  case stringValue:
11099  if ( other.value_.string_ ) {
11100  value_.string_ = duplicateStringValue( other.value_.string_ );
11101  allocated_ = true;
11102  }
11103  else
11104  value_.string_ = 0;
11105  break;
11106 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11107  case arrayValue:
11108  case objectValue:
11109  value_.map_ = new ObjectValues( *other.value_.map_ );
11110  break;
11111 #else
11112  case arrayValue:
11113  value_.array_ = arrayAllocator()->newArrayCopy( *other.value_.array_ );
11114  break;
11115  case objectValue:
11116  value_.map_ = mapAllocator()->newMapCopy( *other.value_.map_ );
11117  break;
11118 #endif
11119  default:
11121  }
11122  if ( other.comments_ ) {
11123  comments_ = new CommentInfo[numberOfCommentPlacement];
11124  for ( int comment =0; comment < numberOfCommentPlacement; ++comment ) {
11125  const CommentInfo &otherComment = other.comments_[comment];
11126  if ( otherComment.comment_ )
11127  comments_[comment].setComment( otherComment.comment_ );
11128  }
11129  }
11130 }
11131 
11132 
11134  switch ( type_ ) {
11135  case nullValue:
11136  case intValue:
11137  case uintValue:
11138  case realValue:
11139  case booleanValue:
11140  break;
11141  case stringValue:
11142  if ( allocated_ )
11143  releaseStringValue( value_.string_ );
11144  break;
11145 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11146  case arrayValue:
11147  case objectValue:
11148  delete value_.map_;
11149  break;
11150 #else
11151  case arrayValue:
11152  arrayAllocator()->destructArray( value_.array_ );
11153  break;
11154  case objectValue:
11155  mapAllocator()->destructMap( value_.map_ );
11156  break;
11157 #endif
11158  default:
11160  }
11161 
11162  if ( comments_ )
11163  delete[] comments_;
11164 }
11165 
11166 Value &
11167 Value::operator=( const Value &other ) {
11168  Value temp( other );
11169  swap( temp );
11170  return *this;
11171 }
11172 
11173 void
11174 Value::swap( Value &other ) {
11175  ValueType temp = type_;
11176  type_ = other.type_;
11177  other.type_ = temp;
11178  std::swap( value_, other.value_ );
11179  int temp2 = allocated_;
11180  allocated_ = other.allocated_;
11181  other.allocated_ = temp2;
11182 }
11183 
11184 ValueType
11185 Value::type() const {
11186  return type_;
11187 }
11188 
11189 
11190 int
11191 Value::compare( const Value &other ) const {
11192  if ( *this < other )
11193  return -1;
11194  if ( *this > other )
11195  return 1;
11196  return 0;
11197 }
11198 
11199 
11200 bool
11201 Value::operator <( const Value &other ) const {
11202  int typeDelta = type_ - other.type_;
11203  if ( typeDelta )
11204  return typeDelta < 0 ? true : false;
11205  switch ( type_ ) {
11206  case nullValue:
11207  return false;
11208  case intValue:
11209  return value_.int_ < other.value_.int_;
11210  case uintValue:
11211  return value_.uint_ < other.value_.uint_;
11212  case realValue:
11213  return value_.real_ < other.value_.real_;
11214  case booleanValue:
11215  return value_.bool_ < other.value_.bool_;
11216  case stringValue:
11217  return ( value_.string_ == 0 && other.value_.string_ )
11218  || ( other.value_.string_
11219  && value_.string_
11220  && strcmp( value_.string_, other.value_.string_ ) < 0 );
11221 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11222  case arrayValue:
11223  case objectValue: {
11224  int delta = int( value_.map_->size() - other.value_.map_->size() );
11225  if ( delta )
11226  return delta < 0;
11227  return (*value_.map_) < (*other.value_.map_);
11228  }
11229 #else
11230  case arrayValue:
11231  return value_.array_->compare( *(other.value_.array_) ) < 0;
11232  case objectValue:
11233  return value_.map_->compare( *(other.value_.map_) ) < 0;
11234 #endif
11235  default:
11237  }
11238  return false; // unreachable
11239 }
11240 
11241 bool
11242 Value::operator <=( const Value &other ) const {
11243  return !(other < *this);
11244 }
11245 
11246 bool
11247 Value::operator >=( const Value &other ) const {
11248  return !(*this < other);
11249 }
11250 
11251 bool
11252 Value::operator >( const Value &other ) const {
11253  return other < *this;
11254 }
11255 
11256 bool
11257 Value::operator ==( const Value &other ) const {
11258  //if ( type_ != other.type_ )
11259  // GCC 2.95.3 says:
11260  // attempt to take address of bit-field structure member `Json::Value::type_'
11261  // Beats me, but a temp solves the problem.
11262  int temp = other.type_;
11263  if ( type_ != temp )
11264  return false;
11265  switch ( type_ ) {
11266  case nullValue:
11267  return true;
11268  case intValue:
11269  return value_.int_ == other.value_.int_;
11270  case uintValue:
11271  return value_.uint_ == other.value_.uint_;
11272  case realValue:
11273  return value_.real_ == other.value_.real_;
11274  case booleanValue:
11275  return value_.bool_ == other.value_.bool_;
11276  case stringValue:
11277  return ( value_.string_ == other.value_.string_ )
11278  || ( other.value_.string_
11279  && value_.string_
11280  && strcmp( value_.string_, other.value_.string_ ) == 0 );
11281 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11282  case arrayValue:
11283  case objectValue:
11284  return value_.map_->size() == other.value_.map_->size()
11285  && (*value_.map_) == (*other.value_.map_);
11286 #else
11287  case arrayValue:
11288  return value_.array_->compare( *(other.value_.array_) ) == 0;
11289  case objectValue:
11290  return value_.map_->compare( *(other.value_.map_) ) == 0;
11291 #endif
11292  default:
11294  }
11295  return false; // unreachable
11296 }
11297 
11298 bool
11299 Value::operator !=( const Value &other ) const
11300 {
11301  return !( *this == other );
11302 }
11303 
11304 const char *
11306  JSON_ASSERT( type_ == stringValue );
11307  return value_.string_;
11308 }
11309 
11310 
11311 std::string
11313  switch ( type_ ) {
11314  case nullValue:
11315  return "";
11316  case stringValue:
11317  return value_.string_ ? value_.string_ : "";
11318  case booleanValue:
11319  return value_.bool_ ? "true" : "false";
11320  case intValue:
11321  case uintValue:
11322  case realValue:
11323  case arrayValue:
11324  case objectValue:
11325  JSON_FAIL_MESSAGE( "Type is not convertible to string" );
11326  default:
11328  }
11329  return ""; // unreachable
11330 }
11331 
11332 # ifdef JSON_USE_CPPTL
11333 CppTL::ConstString
11334 Value::asConstString() const
11335 {
11336  return CppTL::ConstString( asString().c_str() );
11337 }
11338 # endif
11339 
11340 
11341 Value::Int
11342 Value::asInt() const {
11343  switch ( type_ )
11344  {
11345  case nullValue:
11346  return 0;
11347  case intValue:
11348  JSON_ASSERT_MESSAGE( value_.int_ >= minInt && value_.int_ <= maxInt, "unsigned integer out of signed int range" );
11349  return Int(value_.int_);
11350  case uintValue:
11351  JSON_ASSERT_MESSAGE( value_.uint_ <= UInt(maxInt), "unsigned integer out of signed int range" );
11352  return Int(value_.uint_);
11353  case realValue:
11354  JSON_ASSERT_MESSAGE( value_.real_ >= minInt && value_.real_ <= maxInt, "Real out of signed integer range" );
11355  return Int( value_.real_ );
11356  case booleanValue:
11357  return value_.bool_ ? 1 : 0;
11358  case stringValue:
11359  case arrayValue:
11360  case objectValue:
11361  JSON_FAIL_MESSAGE( "Type is not convertible to int" );
11362  default:
11364  }
11365  return 0; // unreachable;
11366 }
11367 
11368 
11369 Value::UInt
11370 Value::asUInt() const {
11371  switch ( type_ ) {
11372  case nullValue:
11373  return 0;
11374  case intValue:
11375  JSON_ASSERT_MESSAGE( value_.int_ >= 0, "Negative integer can not be converted to unsigned integer" );
11376  JSON_ASSERT_MESSAGE( value_.int_ <= maxUInt, "signed integer out of UInt range" );
11377  return UInt(value_.int_);
11378  case uintValue:
11379  JSON_ASSERT_MESSAGE( value_.uint_ <= maxUInt, "unsigned integer out of UInt range" );
11380  return UInt(value_.uint_);
11381  case realValue:
11382  JSON_ASSERT_MESSAGE( value_.real_ >= 0 && value_.real_ <= maxUInt, "Real out of unsigned integer range" );
11383  return UInt( value_.real_ );
11384  case booleanValue:
11385  return value_.bool_ ? 1 : 0;
11386  case stringValue:
11387  case arrayValue:
11388  case objectValue:
11389  JSON_FAIL_MESSAGE( "Type is not convertible to uint" );
11390  default:
11392  }
11393  return 0; // unreachable;
11394 }
11395 
11396 
11397 # if defined(JSON_HAS_INT64)
11398 
11401  switch ( type_ ) {
11402  case nullValue:
11403  return 0;
11404  case intValue:
11405  return value_.int_;
11406  case uintValue:
11407  JSON_ASSERT_MESSAGE( value_.uint_ <= UInt64(maxInt64), "unsigned integer out of Int64 range" );
11408  return value_.uint_;
11409  case realValue:
11410  JSON_ASSERT_MESSAGE( value_.real_ >= minInt64 && value_.real_ <= maxInt64, "Real out of Int64 range" );
11411  return Int( value_.real_ );
11412  case booleanValue:
11413  return value_.bool_ ? 1 : 0;
11414  case stringValue:
11415  case arrayValue:
11416  case objectValue:
11417  JSON_FAIL_MESSAGE( "Type is not convertible to Int64" );
11418  default:
11420  }
11421  return 0; // unreachable;
11422 }
11423 
11424 
11427  switch ( type_ ) {
11428  case nullValue:
11429  return 0;
11430  case intValue:
11431  JSON_ASSERT_MESSAGE( value_.int_ >= 0, "Negative integer can not be converted to UInt64" );
11432  return value_.int_;
11433  case uintValue:
11434  return value_.uint_;
11435  case realValue:
11436  JSON_ASSERT_MESSAGE( value_.real_ >= 0 && value_.real_ <= maxUInt64, "Real out of UInt64 range" );
11437  return UInt( value_.real_ );
11438  case booleanValue:
11439  return value_.bool_ ? 1 : 0;
11440  case stringValue:
11441  case arrayValue:
11442  case objectValue:
11443  JSON_FAIL_MESSAGE( "Type is not convertible to UInt64" );
11444  default:
11446  }
11447  return 0; // unreachable;
11448 }
11449 # endif // if defined(JSON_HAS_INT64)
11450 
11451 
11452 LargestInt
11454 #if defined(JSON_NO_INT64)
11455  return asInt();
11456 #else
11457  return asInt64();
11458 #endif
11459 }
11460 
11461 
11462 LargestUInt
11464 #if defined(JSON_NO_INT64)
11465  return asUInt();
11466 #else
11467  return asUInt64();
11468 #endif
11469 }
11470 
11471 
11472 double
11474  switch ( type_ ) {
11475  case nullValue:
11476  return 0.0;
11477  case intValue:
11478  return static_cast<double>( value_.int_ );
11479  case uintValue:
11480 #if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
11481  return static_cast<double>( value_.uint_ );
11482 #else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
11483  return static_cast<double>( Int(value_.uint_/2) ) * 2 + Int(value_.uint_ & 1);
11484 #endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
11485  case realValue:
11486  return value_.real_;
11487  case booleanValue:
11488  return value_.bool_ ? 1.0 : 0.0;
11489  case stringValue:
11490  case arrayValue:
11491  case objectValue:
11492  JSON_FAIL_MESSAGE( "Type is not convertible to double" );
11493  default:
11495  }
11496  return 0; // unreachable;
11497 }
11498 
11499 float
11501  switch ( type_ ) {
11502  case nullValue:
11503  return 0.0f;
11504  case intValue:
11505  return static_cast<float>( value_.int_ );
11506  case uintValue:
11507 #if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
11508  return static_cast<float>( value_.uint_ );
11509 #else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
11510  return static_cast<float>( Int(value_.uint_/2) ) * 2 + Int(value_.uint_ & 1);
11511 #endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
11512  case realValue:
11513  return static_cast<float>( value_.real_ );
11514  case booleanValue:
11515  return value_.bool_ ? 1.0f : 0.0f;
11516  case stringValue:
11517  case arrayValue:
11518  case objectValue:
11519  JSON_FAIL_MESSAGE( "Type is not convertible to float" );
11520  default:
11522  }
11523  return 0.0f; // unreachable;
11524 }
11525 
11526 bool
11527 Value::asBool() const {
11528  switch ( type_ ) {
11529  case nullValue:
11530  return false;
11531  case intValue:
11532  case uintValue:
11533  return value_.int_ != 0;
11534  case realValue:
11535  return value_.real_ != 0.0;
11536  case booleanValue:
11537  return value_.bool_;
11538  case stringValue:
11539  return value_.string_ && value_.string_[0] != 0;
11540  case arrayValue:
11541  case objectValue:
11542  return value_.map_->size() != 0;
11543  default:
11545  }
11546  return false; // unreachable;
11547 }
11548 
11549 
11550 bool
11552  switch ( type_ ) {
11553  case nullValue:
11554  return true;
11555  case intValue:
11556  return ( other == nullValue && value_.int_ == 0 )
11557  || other == intValue
11558  || ( other == uintValue && value_.int_ >= 0 )
11559  || other == realValue
11560  || other == stringValue
11561  || other == booleanValue;
11562  case uintValue:
11563  return ( other == nullValue && value_.uint_ == 0 )
11564  || ( other == intValue && value_.uint_ <= (unsigned)maxInt )
11565  || other == uintValue
11566  || other == realValue
11567  || other == stringValue
11568  || other == booleanValue;
11569  case realValue:
11570  return ( other == nullValue && value_.real_ == 0.0 )
11571  || ( other == intValue && value_.real_ >= minInt && value_.real_ <= maxInt )
11572  || ( other == uintValue && value_.real_ >= 0 && value_.real_ <= maxUInt )
11573  || other == realValue
11574  || other == stringValue
11575  || other == booleanValue;
11576  case booleanValue:
11577  return ( other == nullValue && value_.bool_ == false )
11578  || other == intValue
11579  || other == uintValue
11580  || other == realValue
11581  || other == stringValue
11582  || other == booleanValue;
11583  case stringValue:
11584  return other == stringValue
11585  || ( other == nullValue && (!value_.string_ || value_.string_[0] == 0) );
11586  case arrayValue:
11587  return other == arrayValue
11588  || ( other == nullValue && value_.map_->size() == 0 );
11589  case objectValue:
11590  return other == objectValue
11591  || ( other == nullValue && value_.map_->size() == 0 );
11592  default:
11594  }
11595  return false; // unreachable;
11596 }
11597 
11598 
11599 /// Number of values in array or object
11600 ArrayIndex
11601 Value::size() const {
11602  switch ( type_ ) {
11603  case nullValue:
11604  case intValue:
11605  case uintValue:
11606  case realValue:
11607  case booleanValue:
11608  case stringValue:
11609  return 0;
11610 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11611  case arrayValue: // size of the array is highest index + 1
11612  if ( !value_.map_->empty() ) {
11613  ObjectValues::const_iterator itLast = value_.map_->end();
11614  --itLast;
11615  return (*itLast).first.index()+1;
11616  }
11617  return 0;
11618  case objectValue:
11619  return ArrayIndex( value_.map_->size() );
11620 #else
11621  case arrayValue:
11622  return Int( value_.array_->size() );
11623  case objectValue:
11624  return Int( value_.map_->size() );
11625 #endif
11626  default:
11628  }
11629  return 0; // unreachable;
11630 }
11631 
11632 
11633 bool
11634 Value::empty() const {
11635  if ( isNull() || isArray() || isObject() )
11636  return size() == 0u;
11637  else
11638  return false;
11639 }
11640 
11641 
11642 bool
11644  return isNull();
11645 }
11646 
11647 
11648 void
11650  JSON_ASSERT( type_ == nullValue || type_ == arrayValue || type_ == objectValue );
11651 
11652  switch ( type_ )
11653  {
11654 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11655  case arrayValue:
11656  case objectValue:
11657  value_.map_->clear();
11658  break;
11659 #else
11660  case arrayValue:
11661  value_.array_->clear();
11662  break;
11663  case objectValue:
11664  value_.map_->clear();
11665  break;
11666 #endif
11667  default:
11668  break;
11669  }
11670 }
11671 
11672 void
11674  JSON_ASSERT( type_ == nullValue || type_ == arrayValue );
11675  if ( type_ == nullValue )
11676  *this = Value( arrayValue );
11677 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11678  ArrayIndex oldSize = size();
11679  if ( newSize == 0 )
11680  clear();
11681  else if ( newSize > oldSize )
11682  (*this)[ newSize - 1 ];
11683  else {
11684  for ( ArrayIndex index = newSize; index < oldSize; ++index )
11685  {
11686  value_.map_->erase( index );
11687  }
11688  assert( size() == newSize );
11689  }
11690 #else
11691  value_.array_->resize( newSize );
11692 #endif
11693 }
11694 
11695 
11696 Value &
11698  JSON_ASSERT( type_ == nullValue || type_ == arrayValue );
11699  if ( type_ == nullValue )
11700  *this = Value( arrayValue );
11701 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11702  CZString key( index );
11703  ObjectValues::iterator it = value_.map_->lower_bound( key );
11704  if ( it != value_.map_->end() && (*it).first == key )
11705  return (*it).second;
11706 
11707  ObjectValues::value_type defaultValue( key, null );
11708  it = value_.map_->insert( it, defaultValue );
11709  return (*it).second;
11710 #else
11711  return value_.array_->resolveReference( index );
11712 #endif
11713 }
11714 
11715 
11716 Value &
11717 Value::operator[]( int index ) {
11718  JSON_ASSERT( index >= 0 );
11719  return (*this)[ ArrayIndex(index) ];
11720 }
11721 
11722 
11723 const Value &
11725  JSON_ASSERT( type_ == nullValue || type_ == arrayValue );
11726  if ( type_ == nullValue )
11727  return null;
11728 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11729  CZString key( index );
11730  ObjectValues::const_iterator it = value_.map_->find( key );
11731  if ( it == value_.map_->end() )
11732  return null;
11733  return (*it).second;
11734 #else
11735  Value *value = value_.array_->find( index );
11736  return value ? *value : null;
11737 #endif
11738 }
11739 
11740 
11741 const Value &
11742 Value::operator[]( int index ) const {
11743  JSON_ASSERT( index >= 0 );
11744  return (*this)[ ArrayIndex(index) ];
11745 }
11746 
11747 
11748 Value &
11749 Value::operator[]( const char *key ) {
11750  return resolveReference( key, false );
11751 }
11752 
11753 
11754 Value &
11755 Value::resolveReference( const char *key,
11756  bool isStatic ) {
11757  JSON_ASSERT( type_ == nullValue || type_ == objectValue );
11758  if ( type_ == nullValue )
11759  *this = Value( objectValue );
11760 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11761  CZString actualKey( key, isStatic ? CZString::noDuplication
11762  : CZString::duplicateOnCopy );
11763  ObjectValues::iterator it = value_.map_->lower_bound( actualKey );
11764  if ( it != value_.map_->end() && (*it).first == actualKey )
11765  return (*it).second;
11766 
11767  ObjectValues::value_type defaultValue( actualKey, null );
11768  it = value_.map_->insert( it, defaultValue );
11769  Value &value = (*it).second;
11770  return value;
11771 #else
11772  return value_.map_->resolveReference( key, isStatic );
11773 #endif
11774 }
11775 
11776 
11777 Value
11779  const Value &defaultValue ) const {
11780  const Value *value = &((*this)[index]);
11781  return value == &null ? defaultValue : *value;
11782 }
11783 
11784 
11785 bool
11787  return index < size();
11788 }
11789 
11790 
11791 
11792 const Value &
11793 Value::operator[]( const char *key ) const {
11794  JSON_ASSERT( type_ == nullValue || type_ == objectValue );
11795  if ( type_ == nullValue )
11796  return null;
11797 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11798  CZString actualKey( key, CZString::noDuplication );
11799  ObjectValues::const_iterator it = value_.map_->find( actualKey );
11800  if ( it == value_.map_->end() )
11801  return null;
11802  return (*it).second;
11803 #else
11804  const Value *value = value_.map_->find( key );
11805  return value ? *value : null;
11806 #endif
11807 }
11808 
11809 
11810 Value &
11811 Value::operator[]( const std::string &key ) {
11812  return (*this)[ key.c_str() ];
11813 }
11814 
11815 
11816 const Value &
11817 Value::operator[]( const std::string &key ) const {
11818  return (*this)[ key.c_str() ];
11819 }
11820 
11821 Value &
11823  return resolveReference( key, true );
11824 }
11825 
11826 
11827 # ifdef JSON_USE_CPPTL
11828 Value &
11829 Value::operator[]( const CppTL::ConstString &key ) {
11830  return (*this)[ key.c_str() ];
11831 }
11832 
11833 
11834 const Value &
11835 Value::operator[]( const CppTL::ConstString &key ) const {
11836  return (*this)[ key.c_str() ];
11837 }
11838 # endif
11839 
11840 
11841 Value &
11842 Value::append( const Value &value ) {
11843  return (*this)[size()] = value;
11844 }
11845 
11846 
11847 Value
11848 Value::get( const char *key,
11849  const Value &defaultValue ) const {
11850  const Value *value = &((*this)[key]);
11851  return value == &null ? defaultValue : *value;
11852 }
11853 
11854 
11855 Value
11856 Value::get( const std::string &key,
11857  const Value &defaultValue ) const {
11858  return get( key.c_str(), defaultValue );
11859 }
11860 
11861 Value
11862 Value::removeMember( const char* key ) {
11863  JSON_ASSERT( type_ == nullValue || type_ == objectValue );
11864  if ( type_ == nullValue )
11865  return null;
11866 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11867  CZString actualKey( key, CZString::noDuplication );
11868  ObjectValues::iterator it = value_.map_->find( actualKey );
11869  if ( it == value_.map_->end() )
11870  return null;
11871  Value old(it->second);
11872  value_.map_->erase(it);
11873  return old;
11874 #else
11875  Value *value = value_.map_->find( key );
11876  if (value){
11877  Value old(*value);
11878  value_.map_.remove( key );
11879  return old;
11880  } else {
11881  return null;
11882  }
11883 #endif
11884 }
11885 
11886 Value
11887 Value::removeMember( const std::string &key ) {
11888  return removeMember( key.c_str() );
11889 }
11890 
11891 # ifdef JSON_USE_CPPTL
11892 Value
11893 Value::get( const CppTL::ConstString &key,
11894  const Value &defaultValue ) const {
11895  return get( key.c_str(), defaultValue );
11896 }
11897 # endif
11898 
11899 bool
11900 Value::isMember( const char *key ) const {
11901  const Value *value = &((*this)[key]);
11902  return value != &null;
11903 }
11904 
11905 
11906 bool
11907 Value::isMember( const std::string &key ) const {
11908  return isMember( key.c_str() );
11909 }
11910 
11911 
11912 # ifdef JSON_USE_CPPTL
11913 bool
11914 Value::isMember( const CppTL::ConstString &key ) const {
11915  return isMember( key.c_str() );
11916 }
11917 #endif
11918 
11921  JSON_ASSERT( type_ == nullValue || type_ == objectValue );
11922  if ( type_ == nullValue )
11923  return Value::Members();
11924  Members members;
11925  members.reserve( value_.map_->size() );
11926 #ifndef JSON_VALUE_USE_INTERNAL_MAP
11927  ObjectValues::const_iterator it = value_.map_->begin();
11928  ObjectValues::const_iterator itEnd = value_.map_->end();
11929  for ( ; it != itEnd; ++it )
11930  members.push_back( std::string( (*it).first.c_str() ) );
11931 #else
11932  ValueInternalMap::IteratorState it;
11933  ValueInternalMap::IteratorState itEnd;
11934  value_.map_->makeBeginIterator( it );
11935  value_.map_->makeEndIterator( itEnd );
11936  for ( ; !ValueInternalMap::equals( it, itEnd ); ValueInternalMap::increment(it) )
11937  members.push_back( std::string( ValueInternalMap::key( it ) ) );
11938 #endif
11939  return members;
11940 }
11941 //
11942 //# ifdef JSON_USE_CPPTL
11943 //EnumMemberNames
11944 //Value::enumMemberNames() const
11945 //{
11946 // if ( type_ == objectValue )
11947 // {
11948 // return CppTL::Enum::any( CppTL::Enum::transform(
11949 // CppTL::Enum::keys( *(value_.map_), CppTL::Type<const CZString &>() ),
11950 // MemberNamesTransform() ) );
11951 // }
11952 // return EnumMemberNames();
11953 //}
11954 //
11955 //
11956 //EnumValues
11957 //Value::enumValues() const
11958 //{
11959 // if ( type_ == objectValue || type_ == arrayValue )
11960 // return CppTL::Enum::anyValues( *(value_.map_),
11961 // CppTL::Type<const Value &>() );
11962 // return EnumValues();
11963 //}
11964 //
11965 //# endif
11966 
11967 
11968 bool
11969 Value::isNull() const {
11970  return type_ == nullValue;
11971 }
11972 
11973 
11974 bool
11975 Value::isBool() const {
11976  return type_ == booleanValue;
11977 }
11978 
11979 
11980 bool
11981 Value::isInt() const {
11982  return type_ == intValue;
11983 }
11984 
11985 
11986 bool
11987 Value::isUInt() const {
11988  return type_ == uintValue;
11989 }
11990 
11991 
11992 bool
11994  return type_ == intValue
11995  || type_ == uintValue
11996  || type_ == booleanValue;
11997 }
11998 
11999 
12000 bool
12002  return type_ == realValue;
12003 }
12004 
12005 
12006 bool
12008  return isIntegral() || isDouble();
12009 }
12010 
12011 
12012 bool
12014  return type_ == stringValue;
12015 }
12016 
12017 
12018 bool
12020  return type_ == nullValue || type_ == arrayValue;
12021 }
12022 
12023 
12024 bool
12026  return type_ == nullValue || type_ == objectValue;
12027 }
12028 
12029 
12030 void
12031 Value::setComment( const char *comment,
12032  CommentPlacement placement ) {
12033  if ( !comments_ )
12034  comments_ = new CommentInfo[numberOfCommentPlacement];
12035  comments_[placement].setComment( comment );
12036 }
12037 
12038 
12039 void
12040 Value::setComment( const std::string &comment,
12041  CommentPlacement placement ) {
12042  setComment( comment.c_str(), placement );
12043 }
12044 
12045 
12046 bool
12048  return comments_ != 0 && comments_[placement].comment_ != 0;
12049 }
12050 
12051 std::string
12053  if ( hasComment(placement) )
12054  return comments_[placement].comment_;
12055  return "";
12056 }
12057 
12058 
12059 std::string
12061  StyledWriter writer;
12062  return writer.write( *this );
12063 }
12064 
12065 
12067 Value::begin() const {
12068  switch ( type_ ) {
12069 #ifdef JSON_VALUE_USE_INTERNAL_MAP
12070  case arrayValue:
12071  if ( value_.array_ ) {
12072  ValueInternalArray::IteratorState it;
12073  value_.array_->makeBeginIterator( it );
12074  return const_iterator( it );
12075  }
12076  break;
12077  case objectValue:
12078  if ( value_.map_ ) {
12079  ValueInternalMap::IteratorState it;
12080  value_.map_->makeBeginIterator( it );
12081  return const_iterator( it );
12082  }
12083  break;
12084 #else
12085  case arrayValue:
12086  case objectValue:
12087  if ( value_.map_ )
12088  return const_iterator( value_.map_->begin() );
12089  break;
12090 #endif
12091  default:
12092  break;
12093  }
12094  return const_iterator();
12095 }
12096 
12098 Value::end() const {
12099  switch ( type_ ) {
12100 #ifdef JSON_VALUE_USE_INTERNAL_MAP
12101  case arrayValue:
12102  if ( value_.array_ ) {
12103  ValueInternalArray::IteratorState it;
12104  value_.array_->makeEndIterator( it );
12105  return const_iterator( it );
12106  }
12107  break;
12108  case objectValue:
12109  if ( value_.map_ ) {
12110  ValueInternalMap::IteratorState it;
12111  value_.map_->makeEndIterator( it );
12112  return const_iterator( it );
12113  }
12114  break;
12115 #else
12116  case arrayValue:
12117  case objectValue:
12118  if ( value_.map_ )
12119  return const_iterator( value_.map_->end() );
12120  break;
12121 #endif
12122  default:
12123  break;
12124  }
12125  return const_iterator();
12126 }
12127 
12128 
12131  switch ( type_ ) {
12132 #ifdef JSON_VALUE_USE_INTERNAL_MAP
12133  case arrayValue:
12134  if ( value_.array_ ) {
12135  ValueInternalArray::IteratorState it;
12136  value_.array_->makeBeginIterator( it );
12137  return iterator( it );
12138  }
12139  break;
12140  case objectValue:
12141  if ( value_.map_ ) {
12142  ValueInternalMap::IteratorState it;
12143  value_.map_->makeBeginIterator( it );
12144  return iterator( it );
12145  }
12146  break;
12147 #else
12148  case arrayValue:
12149  case objectValue:
12150  if ( value_.map_ )
12151  return iterator( value_.map_->begin() );
12152  break;
12153 #endif
12154  default:
12155  break;
12156  }
12157  return iterator();
12158 }
12159 
12162  switch ( type_ ) {
12163 #ifdef JSON_VALUE_USE_INTERNAL_MAP
12164  case arrayValue:
12165  if ( value_.array_ ) {
12166  ValueInternalArray::IteratorState it;
12167  value_.array_->makeEndIterator( it );
12168  return iterator( it );
12169  }
12170  break;
12171  case objectValue:
12172  if ( value_.map_ ) {
12173  ValueInternalMap::IteratorState it;
12174  value_.map_->makeEndIterator( it );
12175  return iterator( it );
12176  }
12177  break;
12178 #else
12179  case arrayValue:
12180  case objectValue:
12181  if ( value_.map_ )
12182  return iterator( value_.map_->end() );
12183  break;
12184 #endif
12185  default:
12186  break;
12187  }
12188  return iterator();
12189 }
12190 
12191 
12192 // class PathArgument
12193 // //////////////////////////////////////////////////////////////////
12194 
12196  : kind_( kindNone ) {
12197 }
12198 
12199 
12201  : index_( index )
12202  , kind_( kindIndex ) {
12203 }
12204 
12205 
12206 PathArgument::PathArgument( const char *key )
12207  : key_( key )
12208  , kind_( kindKey ) {
12209 }
12210 
12211 
12212 PathArgument::PathArgument( const std::string &key )
12213  : key_( key.c_str() )
12214  , kind_( kindKey ) {
12215 }
12216 
12217 // class Path
12218 // //////////////////////////////////////////////////////////////////
12219 
12220 Path::Path( const std::string &path,
12221  const PathArgument &a1,
12222  const PathArgument &a2,
12223  const PathArgument &a3,
12224  const PathArgument &a4,
12225  const PathArgument &a5 ) {
12226  InArgs in;
12227  in.push_back( &a1 );
12228  in.push_back( &a2 );
12229  in.push_back( &a3 );
12230  in.push_back( &a4 );
12231  in.push_back( &a5 );
12232  makePath( path, in );
12233 }
12234 
12235 
12236 void
12237 Path::makePath( const std::string &path,
12238  const InArgs &in ) {
12239  const char *current = path.c_str();
12240  const char *end = current + path.length();
12241  InArgs::const_iterator itInArg = in.begin();
12242  while ( current != end ) {
12243  if ( *current == '[' ) {
12244  ++current;
12245  if ( *current == '%' )
12246  addPathInArg( path, in, itInArg, PathArgument::kindIndex );
12247  else {
12248  ArrayIndex index = 0;
12249  for ( ; current != end && *current >= '0' && *current <= '9'; ++current )
12250  index = index * 10 + ArrayIndex(*current - '0');
12251  args_.push_back( index );
12252  }
12253  if ( current == end || *current++ != ']' )
12254  invalidPath( path, int(current - path.c_str()) );
12255  }
12256  else if ( *current == '%' ) {
12257  addPathInArg( path, in, itInArg, PathArgument::kindKey );
12258  ++current;
12259  }
12260  else if ( *current == '.' ) {
12261  ++current;
12262  } else {
12263  const char *beginName = current;
12264  while ( current != end && !strchr( "[.", *current ) )
12265  ++current;
12266  args_.push_back( std::string( beginName, current ) );
12267  }
12268  }
12269 }
12270 
12271 
12272 void
12273 Path::addPathInArg( const std::string &path,
12274  const InArgs &in,
12275  InArgs::const_iterator &itInArg,
12276  PathArgument::Kind kind ) {
12277  if ( itInArg == in.end() ) {
12278  // Error: missing argument %d
12279  } else if ( (*itInArg)->kind_ != kind ) {
12280  // Error: bad argument type
12281  } else {
12282  args_.push_back( **itInArg );
12283  }
12284 }
12285 
12286 
12287 void
12288 Path::invalidPath( const std::string &path,
12289  int location ) {
12290  // Error: invalid path.
12291 }
12292 
12293 
12294 const Value &
12295 Path::resolve( const Value &root ) const {
12296  const Value *node = &root;
12297  for ( Args::const_iterator it = args_.begin(); it != args_.end(); ++it ) {
12298  const PathArgument &arg = *it;
12299  if ( arg.kind_ == PathArgument::kindIndex ) {
12300  if ( !node->isArray() || node->isValidIndex( arg.index_ ) ) {
12301  // Error: unable to resolve path (array value expected at position...
12302  }
12303  node = &((*node)[arg.index_]);
12304  } else if ( arg.kind_ == PathArgument::kindKey ) {
12305  if ( !node->isObject() ) {
12306  // Error: unable to resolve path (object value expected at position...)
12307  }
12308  node = &((*node)[arg.key_]);
12309  if ( node == &Value::null ) {
12310  // Error: unable to resolve path (object has no member named '' at position...)
12311  }
12312  }
12313  }
12314  return *node;
12315 }
12316 
12317 
12318 Value
12319 Path::resolve( const Value &root,
12320  const Value &defaultValue ) const {
12321  const Value *node = &root;
12322  for ( Args::const_iterator it = args_.begin(); it != args_.end(); ++it ) {
12323  const PathArgument &arg = *it;
12324  if ( arg.kind_ == PathArgument::kindIndex ) {
12325  if ( !node->isArray() || node->isValidIndex( arg.index_ ) )
12326  return defaultValue;
12327  node = &((*node)[arg.index_]);
12328  } else if ( arg.kind_ == PathArgument::kindKey ) {
12329  if ( !node->isObject() )
12330  return defaultValue;
12331  node = &((*node)[arg.key_]);
12332  if ( node == &Value::null )
12333  return defaultValue;
12334  }
12335  }
12336  return *node;
12337 }
12338 
12339 
12340 Value &
12341 Path::make( Value &root ) const {
12342  Value *node = &root;
12343  for ( Args::const_iterator it = args_.begin(); it != args_.end(); ++it ) {
12344  const PathArgument &arg = *it;
12345  if ( arg.kind_ == PathArgument::kindIndex ) {
12346  if ( !node->isArray() ) {
12347  // Error: node is not an array at position ...
12348  }
12349  node = &((*node)[arg.index_]);
12350  } else if ( arg.kind_ == PathArgument::kindKey ) {
12351  if ( !node->isObject() ) {
12352  // Error: node is not an object at position...
12353  }
12354  node = &((*node)[arg.key_]);
12355  }
12356  }
12357  return *node;
12358 }
12359 
12360 
12361 } // namespace Json
12362 
12363 // //////////////////////////////////////////////////////////////////////
12364 // End of content of file: src/lib_json/json_value.cpp
12365 // //////////////////////////////////////////////////////////////////////
12366 
12367 
12368 
12369 
12370 
12371 
12372 // //////////////////////////////////////////////////////////////////////
12373 // Beginning of content of file: src/lib_json/json_writer.cpp
12374 // //////////////////////////////////////////////////////////////////////
12375 
12376 // Copyright 2007-2010 Baptiste Lepilleur
12377 // Distributed under MIT license, or public domain if desired and
12378 // recognized in your jurisdiction.
12379 // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
12380 
12381 #if !defined(JSON_IS_AMALGAMATION)
12382 # include <json/writer.h>
12383 # include "json_tool.h"
12384 #endif // if !defined(JSON_IS_AMALGAMATION)
12385 #include <utility>
12386 #include <assert.h>
12387 #include <stdio.h>
12388 #include <string.h>
12389 #include <iostream>
12390 #include <sstream>
12391 #include <iomanip>
12392 
12393 #if _MSC_VER >= 1400 // VC++ 8.0
12394 #pragma warning( disable : 4996 ) // disable warning about strdup being deprecated.
12395 #endif
12396 
12397 namespace Json {
12398 
12399 static bool containsControlCharacter( const char* str ) {
12400  while ( *str ) {
12401  if ( isControlCharacter( *(str++) ) )
12402  return true;
12403  }
12404  return false;
12405 }
12406 
12407 
12408 std::string valueToString( LargestInt value ) {
12409  UIntToStringBuffer buffer;
12410  char *current = buffer + sizeof(buffer);
12411  bool isNegative = value < 0;
12412  if ( isNegative )
12413  value = -value;
12414  uintToString( LargestUInt(value), current );
12415  if ( isNegative )
12416  *--current = '-';
12417  assert( current >= buffer );
12418  return current;
12419 }
12420 
12421 
12422 std::string valueToString( LargestUInt value ) {
12423  UIntToStringBuffer buffer;
12424  char *current = buffer + sizeof(buffer);
12425  uintToString( value, current );
12426  assert( current >= buffer );
12427  return current;
12428 }
12429 
12430 #if defined(JSON_HAS_INT64)
12431 
12432 std::string valueToString( Int value )
12433 {
12434  return valueToString( LargestInt(value) );
12435 }
12436 
12437 
12438 std::string valueToString( UInt value ) {
12439  return valueToString( LargestUInt(value) );
12440 }
12441 
12442 #endif // # if defined(JSON_HAS_INT64)
12443 
12444 
12445 std::string valueToString( double value ) {
12446  char buffer[32];
12447 #if defined(_MSC_VER) && defined(__STDC_SECURE_LIB__) // Use secure version with visual studio 2005 to avoid warning.
12448  sprintf_s(buffer, sizeof(buffer), "%#.16g", value);
12449 #else
12450  sprintf(buffer, "%#.16g", value);
12451 #endif
12452  char* ch = buffer + strlen(buffer) - 1;
12453  if (*ch != '0') return buffer; // nothing to truncate, so save time
12454  while(ch > buffer && *ch == '0'){
12455  --ch;
12456  }
12457  char* last_nonzero = ch;
12458  while(ch >= buffer){
12459  switch(*ch){
12460  case '0':
12461  case '1':
12462  case '2':
12463  case '3':
12464  case '4':
12465  case '5':
12466  case '6':
12467  case '7':
12468  case '8':
12469  case '9':
12470  --ch;
12471  continue;
12472  case '.':
12473  // Truncate zeroes to save bytes in output, but keep one.
12474  *(last_nonzero+2) = '\0';
12475  return buffer;
12476  default:
12477  return buffer;
12478  }
12479  }
12480  return buffer;
12481 }
12482 
12483 
12484 std::string valueToString( bool value ) {
12485  return value ? "true" : "false";
12486 }
12487 
12488 std::string valueToQuotedString( const char *value ) {
12489  // Not sure how to handle unicode...
12490  if (strpbrk(value, "\"\\\b\f\n\r\t") == NULL && !containsControlCharacter( value ))
12491  return std::string("\"") + value + "\"";
12492  // We have to walk value and escape any special characters.
12493  // Appending to std::string is not efficient, but this should be rare.
12494  // (Note: forward slashes are *not* rare, but I am not escaping them.)
12495  std::string::size_type maxsize = strlen(value)*2 + 3; // allescaped+quotes+NULL
12496  std::string result;
12497  result.reserve(maxsize); // to avoid lots of mallocs
12498  result += "\"";
12499  for (const char* c=value; *c != 0; ++c) {
12500  switch(*c) {
12501  case '\"':
12502  result += "\\\"";
12503  break;
12504  case '\\':
12505  result += "\\\\";
12506  break;
12507  case '\b':
12508  result += "\\b";
12509  break;
12510  case '\f':
12511  result += "\\f";
12512  break;
12513  case '\n':
12514  result += "\\n";
12515  break;
12516  case '\r':
12517  result += "\\r";
12518  break;
12519  case '\t':
12520  result += "\\t";
12521  break;
12522  //case '/':
12523  // Even though \/ is considered a legal escape in JSON, a bare
12524  // slash is also legal, so I see no reason to escape it.
12525  // (I hope I am not misunderstanding something.
12526  // blep notes: actually escaping \/ may be useful in javascript to avoid </
12527  // sequence.
12528  // Should add a flag to allow this compatibility mode and prevent this
12529  // sequence from occurring.
12530  default:
12531  if ( isControlCharacter( *c ) ) {
12532  std::ostringstream oss;
12533  oss << "\\u" << std::hex << std::uppercase << std::setfill('0') << std::setw(4) << static_cast<int>(*c);
12534  result += oss.str();
12535  } else {
12536  result += *c;
12537  }
12538  break;
12539  }
12540  }
12541  result += "\"";
12542  return result;
12543 }
12544 
12545 // Class Writer
12546 // //////////////////////////////////////////////////////////////////
12548 }
12549 
12550 
12551 // Class FastWriter
12552 // //////////////////////////////////////////////////////////////////
12553 
12555  : yamlCompatiblityEnabled_( false ) {
12556 }
12557 
12558 
12559 void
12561  yamlCompatiblityEnabled_ = true;
12562 }
12563 
12564 
12565 std::string
12566 FastWriter::write( const Value &root ) {
12567  document_ = "";
12568  writeValue( root );
12569  document_ += "\n";
12570  return document_;
12571 }
12572 
12573 
12574 void
12575 FastWriter::writeValue( const Value &value ) {
12576  switch ( value.type() ) {
12577  case nullValue:
12578  document_ += "null";
12579  break;
12580  case intValue:
12581  document_ += valueToString( value.asLargestInt() );
12582  break;
12583  case uintValue:
12584  document_ += valueToString( value.asLargestUInt() );
12585  break;
12586  case realValue:
12587  document_ += valueToString( value.asDouble() );
12588  break;
12589  case stringValue:
12590  document_ += valueToQuotedString( value.asCString() );
12591  break;
12592  case booleanValue:
12593  document_ += valueToString( value.asBool() );
12594  break;
12595  case arrayValue: {
12596  document_ += "[";
12597  int size = value.size();
12598  for ( int index =0; index < size; ++index ) {
12599  if ( index > 0 )
12600  document_ += ",";
12601  writeValue( value[index] );
12602  }
12603  document_ += "]";
12604  }
12605  break;
12606  case objectValue: {
12607  Value::Members members( value.getMemberNames() );
12608  document_ += "{";
12609  for ( Value::Members::iterator it = members.begin();
12610  it != members.end();
12611  ++it ) {
12612  const std::string &name = *it;
12613  if ( it != members.begin() )
12614  document_ += ",";
12615  document_ += valueToQuotedString( name.c_str() );
12616  document_ += yamlCompatiblityEnabled_ ? ": "
12617  : ":";
12618  writeValue( value[name] );
12619  }
12620  document_ += "}";
12621  }
12622  break;
12623  }
12624 }
12625 
12626 
12627 // Class StyledWriter
12628 // //////////////////////////////////////////////////////////////////
12629 
12631  : rightMargin_( 74 )
12632  , indentSize_( 3 ) {
12633 }
12634 
12635 
12636 std::string
12637 StyledWriter::write( const Value &root ) {
12638  document_ = "";
12639  addChildValues_ = false;
12640  indentString_ = "";
12641  writeCommentBeforeValue( root );
12642  writeValue( root );
12643  writeCommentAfterValueOnSameLine( root );
12644  document_ += "\n";
12645  return document_;
12646 }
12647 
12648 
12649 void
12650 StyledWriter::writeValue( const Value &value ) {
12651  switch ( value.type() ) {
12652  case nullValue:
12653  pushValue( "null" );
12654  break;
12655  case intValue:
12656  pushValue( valueToString( value.asLargestInt() ) );
12657  break;
12658  case uintValue:
12659  pushValue( valueToString( value.asLargestUInt() ) );
12660  break;
12661  case realValue:
12662  pushValue( valueToString( value.asDouble() ) );
12663  break;
12664  case stringValue:
12665  pushValue( valueToQuotedString( value.asCString() ) );
12666  break;
12667  case booleanValue:
12668  pushValue( valueToString( value.asBool() ) );
12669  break;
12670  case arrayValue:
12671  writeArrayValue( value);
12672  break;
12673  case objectValue:
12674  {
12675  Value::Members members( value.getMemberNames() );
12676  if ( members.empty() )
12677  pushValue( "{}" );
12678  else {
12679  writeWithIndent( "{" );
12680  indent();
12681  Value::Members::iterator it = members.begin();
12682  for (;;) {
12683  const std::string &name = *it;
12684  const Value &childValue = value[name];
12685  writeCommentBeforeValue( childValue );
12686  writeWithIndent( valueToQuotedString( name.c_str() ) );
12687  document_ += " : ";
12688  writeValue( childValue );
12689  if ( ++it == members.end() ) {
12690  writeCommentAfterValueOnSameLine( childValue );
12691  break;
12692  }
12693  document_ += ",";
12694  writeCommentAfterValueOnSameLine( childValue );
12695  }
12696  unindent();
12697  writeWithIndent( "}" );
12698  }
12699  }
12700  break;
12701  }
12702 }
12703 
12704 
12705 void
12706 StyledWriter::writeArrayValue( const Value &value ) {
12707  unsigned size = value.size();
12708  if ( size == 0 )
12709  pushValue( "[]" );
12710  else {
12711  bool isArrayMultiLine = isMultineArray( value );
12712  if ( isArrayMultiLine ) {
12713  writeWithIndent( "[" );
12714  indent();
12715  bool hasChildValue = !childValues_.empty();
12716  unsigned index =0;
12717  for (;;) {
12718  const Value &childValue = value[index];
12719  writeCommentBeforeValue( childValue );
12720  if ( hasChildValue )
12721  writeWithIndent( childValues_[index] );
12722  else {
12723  writeIndent();
12724  writeValue( childValue );
12725  }
12726  if ( ++index == size ) {
12727  writeCommentAfterValueOnSameLine( childValue );
12728  break;
12729  }
12730  document_ += ",";
12731  writeCommentAfterValueOnSameLine( childValue );
12732  }
12733  unindent();
12734  writeWithIndent( "]" );
12735  } else { // output on a single line
12736  assert( childValues_.size() == size );
12737  document_ += "[ ";
12738  for ( unsigned index =0; index < size; ++index ) {
12739  if ( index > 0 )
12740  document_ += ", ";
12741  document_ += childValues_[index];
12742  }
12743  document_ += " ]";
12744  }
12745  }
12746 }
12747 
12748 
12749 bool
12750 StyledWriter::isMultineArray( const Value &value ) {
12751  int size = value.size();
12752  bool isMultiLine = size*3 >= rightMargin_ ;
12753  childValues_.clear();
12754  for ( int index =0; index < size && !isMultiLine; ++index ) {
12755  const Value &childValue = value[index];
12756  isMultiLine = isMultiLine ||
12757  ( (childValue.isArray() || childValue.isObject()) &&
12758  childValue.size() > 0 );
12759  }
12760  if ( !isMultiLine ) { // check if line length > max line length
12761  childValues_.reserve( size );
12762  addChildValues_ = true;
12763  int lineLength = 4 + (size-1)*2; // '[ ' + ', '*n + ' ]'
12764  for ( int index =0; index < size && !isMultiLine; ++index ) {
12765  writeValue( value[index] );
12766  lineLength += int( childValues_[index].length() );
12767  isMultiLine = isMultiLine && hasCommentForValue( value[index] );
12768  }
12769  addChildValues_ = false;
12770  isMultiLine = isMultiLine || lineLength >= rightMargin_;
12771  }
12772  return isMultiLine;
12773 }
12774 
12775 
12776 void
12777 StyledWriter::pushValue( const std::string &value ) {
12778  if ( addChildValues_ )
12779  childValues_.push_back( value );
12780  else
12781  document_ += value;
12782 }
12783 
12784 
12785 void
12786 StyledWriter::writeIndent() {
12787  if ( !document_.empty() )
12788  {
12789  char last = document_[document_.length()-1];
12790  if ( last == ' ' ) // already indented
12791  return;
12792  if ( last != '\n' ) // Comments may add new-line
12793  document_ += '\n';
12794  }
12795  document_ += indentString_;
12796 }
12797 
12798 
12799 void
12800 StyledWriter::writeWithIndent( const std::string &value ) {
12801  writeIndent();
12802  document_ += value;
12803 }
12804 
12805 
12806 void
12807 StyledWriter::indent() {
12808  indentString_ += std::string( indentSize_, ' ' );
12809 }
12810 
12811 
12812 void
12813 StyledWriter::unindent() {
12814  assert( int(indentString_.size()) >= indentSize_ );
12815  indentString_.resize( indentString_.size() - indentSize_ );
12816 }
12817 
12818 
12819 void
12820 StyledWriter::writeCommentBeforeValue( const Value &root ) {
12821  if ( !root.hasComment( commentBefore ) )
12822  return;
12823  document_ += normalizeEOL( root.getComment( commentBefore ) );
12824  document_ += "\n";
12825 }
12826 
12827 
12828 void
12829 StyledWriter::writeCommentAfterValueOnSameLine( const Value &root ) {
12830  if ( root.hasComment( commentAfterOnSameLine ) )
12831  document_ += " " + normalizeEOL( root.getComment( commentAfterOnSameLine ) );
12832 
12833  if ( root.hasComment( commentAfter ) ) {
12834  document_ += "\n";
12835  document_ += normalizeEOL( root.getComment( commentAfter ) );
12836  document_ += "\n";
12837  }
12838 }
12839 
12840 
12841 bool
12842 StyledWriter::hasCommentForValue( const Value &value ) {
12843  return value.hasComment( commentBefore )
12844  || value.hasComment( commentAfterOnSameLine )
12845  || value.hasComment( commentAfter );
12846 }
12847 
12848 
12849 std::string
12850 StyledWriter::normalizeEOL( const std::string &text ) {
12851  std::string normalized;
12852  normalized.reserve( text.length() );
12853  const char *begin = text.c_str();
12854  const char *end = begin + text.length();
12855  const char *current = begin;
12856  while ( current != end ) {
12857  char c = *current++;
12858  if ( c == '\r' ) { // mac or dos EOL
12859  if ( *current == '\n' ) // convert dos EOL
12860  ++current;
12861  normalized += '\n';
12862  } else // handle unix EOL & other char
12863  normalized += c;
12864  }
12865  return normalized;
12866 }
12867 
12868 
12869 // Class StyledStreamWriter
12870 // //////////////////////////////////////////////////////////////////
12871 
12872 StyledStreamWriter::StyledStreamWriter( std::string indentation )
12873  : document_(NULL)
12874  , rightMargin_( 74 )
12875  , indentation_( indentation ) {
12876 }
12877 
12878 
12879 void
12880 StyledStreamWriter::write( std::ostream &out, const Value &root ) {
12881  document_ = &out;
12882  addChildValues_ = false;
12883  indentString_ = "";
12884  writeCommentBeforeValue( root );
12885  writeValue( root );
12886  writeCommentAfterValueOnSameLine( root );
12887  *document_ << "\n";
12888  document_ = NULL; // Forget the stream, for safety.
12889 }
12890 
12891 
12892 void
12893 StyledStreamWriter::writeValue( const Value &value ) {
12894  switch ( value.type() ) {
12895  case nullValue:
12896  pushValue( "null" );
12897  break;
12898  case intValue:
12899  pushValue( valueToString( value.asLargestInt() ) );
12900  break;
12901  case uintValue:
12902  pushValue( valueToString( value.asLargestUInt() ) );
12903  break;
12904  case realValue:
12905  pushValue( valueToString( value.asDouble() ) );
12906  break;
12907  case stringValue:
12908  pushValue( valueToQuotedString( value.asCString() ) );
12909  break;
12910  case booleanValue:
12911  pushValue( valueToString( value.asBool() ) );
12912  break;
12913  case arrayValue:
12914  writeArrayValue( value);
12915  break;
12916  case objectValue: {
12917  Value::Members members( value.getMemberNames() );
12918  if ( members.empty() )
12919  pushValue( "{}" );
12920  else {
12921  writeWithIndent( "{" );
12922  indent();
12923  Value::Members::iterator it = members.begin();
12924  for (;;) {
12925  const std::string &name = *it;
12926  const Value &childValue = value[name];
12927  writeCommentBeforeValue( childValue );
12928  writeWithIndent( valueToQuotedString( name.c_str() ) );
12929  *document_ << " : ";
12930  writeValue( childValue );
12931  if ( ++it == members.end() ) {
12932  writeCommentAfterValueOnSameLine( childValue );
12933  break;
12934  }
12935  *document_ << ",";
12936  writeCommentAfterValueOnSameLine( childValue );
12937  }
12938  unindent();
12939  writeWithIndent( "}" );
12940  }
12941  }
12942  break;
12943  }
12944 }
12945 
12946 
12947 void
12948 StyledStreamWriter::writeArrayValue( const Value &value ) {
12949  unsigned size = value.size();
12950  if ( size == 0 )
12951  pushValue( "[]" );
12952  else {
12953  bool isArrayMultiLine = isMultineArray( value );
12954  if ( isArrayMultiLine ) {
12955  writeWithIndent( "[" );
12956  indent();
12957  bool hasChildValue = !childValues_.empty();
12958  unsigned index =0;
12959  for (;;) {
12960  const Value &childValue = value[index];
12961  writeCommentBeforeValue( childValue );
12962  if ( hasChildValue )
12963  writeWithIndent( childValues_[index] );
12964  else {
12965  writeIndent();
12966  writeValue( childValue );
12967  }
12968  if ( ++index == size ) {
12969  writeCommentAfterValueOnSameLine( childValue );
12970  break;
12971  }
12972  *document_ << ",";
12973  writeCommentAfterValueOnSameLine( childValue );
12974  }
12975  unindent();
12976  writeWithIndent( "]" );
12977  }
12978  else { // output on a single line
12979  assert( childValues_.size() == size );
12980  *document_ << "[ ";
12981  for ( unsigned index =0; index < size; ++index ) {
12982  if ( index > 0 )
12983  *document_ << ", ";
12984  *document_ << childValues_[index];
12985  }
12986  *document_ << " ]";
12987  }
12988  }
12989 }
12990 
12991 
12992 bool
12993 StyledStreamWriter::isMultineArray( const Value &value ) {
12994  int size = value.size();
12995  bool isMultiLine = size*3 >= rightMargin_ ;
12996  childValues_.clear();
12997  for ( int index =0; index < size && !isMultiLine; ++index ) {
12998  const Value &childValue = value[index];
12999  isMultiLine = isMultiLine ||
13000  ( (childValue.isArray() || childValue.isObject()) &&
13001  childValue.size() > 0 );
13002  }
13003  if ( !isMultiLine ) { // check if line length > max line length
13004  childValues_.reserve( size );
13005  addChildValues_ = true;
13006  int lineLength = 4 + (size-1)*2; // '[ ' + ', '*n + ' ]'
13007  for ( int index =0; index < size && !isMultiLine; ++index ) {
13008  writeValue( value[index] );
13009  lineLength += int( childValues_[index].length() );
13010  isMultiLine = isMultiLine && hasCommentForValue( value[index] );
13011  }
13012  addChildValues_ = false;
13013  isMultiLine = isMultiLine || lineLength >= rightMargin_;
13014  }
13015  return isMultiLine;
13016 }
13017 
13018 
13019 void
13020 StyledStreamWriter::pushValue( const std::string &value ) {
13021  if ( addChildValues_ )
13022  childValues_.push_back( value );
13023  else
13024  *document_ << value;
13025 }
13026 
13027 
13028 void
13029 StyledStreamWriter::writeIndent() {
13030  /*
13031  Some comments in this method would have been nice. ;-)
13032 
13033  if ( !document_.empty() )
13034  {
13035  char last = document_[document_.length()-1];
13036  if ( last == ' ' ) // already indented
13037  return;
13038  if ( last != '\n' ) // Comments may add new-line
13039  *document_ << '\n';
13040  }
13041  */
13042  *document_ << '\n' << indentString_;
13043 }
13044 
13045 
13046 void
13047 StyledStreamWriter::writeWithIndent( const std::string &value ) {
13048  writeIndent();
13049  *document_ << value;
13050 }
13051 
13052 
13053 void
13054 StyledStreamWriter::indent() {
13055  indentString_ += indentation_;
13056 }
13057 
13058 
13059 void
13060 StyledStreamWriter::unindent() {
13061  assert( indentString_.size() >= indentation_.size() );
13062  indentString_.resize( indentString_.size() - indentation_.size() );
13063 }
13064 
13065 
13066 void
13067 StyledStreamWriter::writeCommentBeforeValue( const Value &root ) {
13068  if ( !root.hasComment( commentBefore ) )
13069  return;
13070  *document_ << normalizeEOL( root.getComment( commentBefore ) );
13071  *document_ << "\n";
13072 }
13073 
13074 
13075 void
13076 StyledStreamWriter::writeCommentAfterValueOnSameLine( const Value &root ) {
13077  if ( root.hasComment( commentAfterOnSameLine ) )
13078  *document_ << " " + normalizeEOL( root.getComment( commentAfterOnSameLine ) );
13079 
13080  if ( root.hasComment( commentAfter ) ) {
13081  *document_ << "\n";
13082  *document_ << normalizeEOL( root.getComment( commentAfter ) );
13083  *document_ << "\n";
13084  }
13085 }
13086 
13087 
13088 bool
13089 StyledStreamWriter::hasCommentForValue( const Value &value ) {
13090  return value.hasComment( commentBefore )
13091  || value.hasComment( commentAfterOnSameLine )
13092  || value.hasComment( commentAfter );
13093 }
13094 
13095 
13096 std::string
13097 StyledStreamWriter::normalizeEOL( const std::string &text ) {
13098  std::string normalized;
13099  normalized.reserve( text.length() );
13100  const char *begin = text.c_str();
13101  const char *end = begin + text.length();
13102  const char *current = begin;
13103  while ( current != end ) {
13104  char c = *current++;
13105  if ( c == '\r' ) { // mac or dos EOL
13106  if ( *current == '\n' ) // convert dos EOL
13107  ++current;
13108  normalized += '\n';
13109  } else // handle unix EOL & other char
13110  normalized += c;
13111  }
13112  return normalized;
13113 }
13114 
13115 
13116 std::ostream& operator<<( std::ostream &sout, const Value &root ) {
13117  Json::StyledStreamWriter writer;
13118  writer.write(sout, root);
13119  return sout;
13120 }
13121 
13122 
13123 } // namespace Json
13124 
13125 // //////////////////////////////////////////////////////////////////////
13126 // End of content of file: src/lib_json/json_writer.cpp
13127 // //////////////////////////////////////////////////////////////////////
13128 
13129 
13130 
13131 
13132 
13133 //
13134 // end of src/jsoncpp.cpp
13135 //
13136 
13137 
13138 //
13139 // start of src/jsoncustomwriter.cpp
13140 //
13141 /**********************************************************************
13142 Copyright (c) 2013 by Matt Swain <m.swain@me.com>
13143 
13144 The MIT License
13145 
13146 Permission is hereby granted, free of charge, to any person obtaining a copy
13147 of this software and associated documentation files (the "Software"), to deal
13148 in the Software without restriction, including without limitation the rights
13149 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13150 copies of the Software, and to permit persons to whom the Software is
13151 furnished to do so, subject to the following conditions:
13152 
13153 The above copyright notice and this permission notice shall be included in
13154 all copies or substantial portions of the Software.
13155 
13156 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13157 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13158 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13159 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
13160 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
13161 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
13162 THE SOFTWARE.
13163 
13164 ***********************************************************************/
13165 
13166 #ifndef PYNE_IS_AMALGAMATED
13167  #include "json.h"
13168  #include "jsoncustomwriter.h"
13169 #endif
13170 
13171 namespace Json {
13172 
13173 CustomWriter::CustomWriter( std::string opencurly,
13174  std::string closecurly,
13175  std::string opensquare,
13176  std::string closesquare,
13177  std::string colon,
13178  std::string comma,
13179  std::string indent,
13180  int maxWidth)
13181  : opencurly_( opencurly )
13182  , closecurly_( closecurly )
13183  , opensquare_( opensquare )
13184  , closesquare_( closesquare )
13185  , colon_( colon )
13186  , comma_( comma )
13187  , indent_( indent )
13188  , maxWidth_( maxWidth )
13189 {
13190 }
13191 
13192 
13193 std::string
13195 {
13196  document_ = "";
13197  indentString_ = "";
13198  writeValue( root, document_, false );
13199  document_ += "\n";
13200  return document_;
13201 }
13202 
13203 
13204 void
13205 CustomWriter::writeValue( const Value &value, std::string &doc, bool forceSingleLine )
13206 {
13207  switch ( value.type() )
13208  {
13209  case nullValue:
13210  doc += "null";
13211  break;
13212  case intValue:
13213  doc += valueToString( value.asLargestInt() );
13214  break;
13215  case uintValue:
13216  doc += valueToString( value.asLargestUInt() );
13217  break;
13218  case realValue:
13219  doc += valueToString( value.asDouble() );
13220  break;
13221  case stringValue:
13222  doc += valueToQuotedString( value.asCString() );
13223  break;
13224  case booleanValue:
13225  doc += valueToString( value.asBool() );
13226  break;
13227  case arrayValue:
13228  {
13229  bool isMulti = false;
13230  if (!forceSingleLine)
13231  {
13232  std::string valLine = "";
13233  writeValue( value, valLine, true);
13234  if (valLine.length() > maxWidth_)
13235  {
13236  isMulti = true;
13237  }
13238  else
13239  {
13240  doc += valLine;
13241  break;
13242  }
13243  }
13244  doc += opensquare_;
13245  if (isMulti)
13246  indent();
13247  for ( int index =0; index < value.size(); ++index )
13248  {
13249  if (isMulti)
13250  {
13251  doc += "\n";
13252  doc += indentString_;
13253  }
13254  writeValue( value[index], doc, false );
13255  if ( index < value.size()-1 )
13256  doc += comma_;
13257  }
13258  if (isMulti)
13259  {
13260  unindent();
13261  doc += "\n";
13262  doc += indentString_;
13263  }
13264  doc += closesquare_;
13265  }
13266  break;
13267  case objectValue:
13268  {
13269  bool isMulti = false;
13270  if (!forceSingleLine)
13271  {
13272  std::string valLine = "";
13273  writeValue( value, valLine, true);
13274  if (valLine.length() > maxWidth_)
13275  {
13276  isMulti = true;
13277  }
13278  else
13279  {
13280  doc += valLine;
13281  break;
13282  }
13283  }
13284  Value::Members members( value.getMemberNames() );
13285  doc += opencurly_;
13286  if (isMulti)
13287  indent();
13288  for ( Value::Members::iterator it = members.begin();
13289  it != members.end();
13290  ++it )
13291  {
13292  if (isMulti)
13293  {
13294  doc += "\n";
13295  doc += indentString_;
13296 
13297  }
13298  const std::string &name = *it;
13299  doc += valueToQuotedString( name.c_str() );
13300  doc += colon_;
13301  writeValue( value[name], doc, forceSingleLine );
13302  if ( !(it + 1 == members.end()) )
13303  doc += comma_;
13304  }
13305  if (isMulti)
13306  {
13307  unindent();
13308  doc += "\n";
13309  doc += indentString_;
13310  }
13311  doc += closecurly_;
13312  }
13313  break;
13314  }
13315 }
13316 
13317 
13318 void
13319 CustomWriter::indent()
13320 {
13321  indentString_ += indent_;
13322 }
13323 
13324 
13325 void
13326 CustomWriter::unindent()
13327 {
13328  int idSize = int(indent_.size());
13329  int idsSize = int(indentString_.size());
13330  if (idsSize >= idSize)
13331  indentString_.resize (idsSize - idSize);
13332 }
13333 
13334 }
13335 //
13336 // end of src/jsoncustomwriter.cpp
13337 //
13338 
13339 
13340 //
13341 // start of src/material.cpp
13342 //
13343 // Material.cpp
13344 // The very central Material class
13345 // -- Anthony Scopatz
13346 
13347 #include <string>
13348 #include <vector>
13349 #include <iomanip> // std::setprecision
13350 #include <math.h> // modf
13351 #include <stdexcept>
13352 
13353 #ifndef PYNE_IS_AMALGAMATED
13354 #include "material.h"
13355 #endif
13356 
13357 // h5wrap template
13358 template double h5wrap::get_array_index(hid_t, int, hid_t);
13359 
13360 
13361 
13362 /***************************/
13363 /*** Protected Functions ***/
13364 /***************************/
13365 
13367  // Sums the weights in the composition dictionary
13368  double sum = 0.0;
13369  for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
13370  sum = sum + i->second;
13371  }
13372  return sum;
13373 };
13374 
13375 
13376 
13378  double sum = get_comp_sum();
13379  if (sum != 1.0 && sum != 0.0) {
13380  for (comp_iter i = comp.begin(); i != comp.end(); i++)
13381  i->second = i->second / sum;
13382  }
13383 
13384  if (mass < 0.0)
13385  mass = sum;
13386 }
13387 
13388 
13389 
13390 
13391 
13392 
13393 void pyne::Material::_load_comp_protocol0(hid_t db, std::string datapath, int row) {
13394  hid_t matgroup = H5Gopen2(db, datapath.c_str(), H5P_DEFAULT);
13395  hid_t nucset;
13396  double nucvalue;
13397  ssize_t nuckeylen;
13398  std::string nuckey;
13399 
13400  // get the number of members in the material group
13401  H5G_info_t group_info;
13402  H5Gget_info(matgroup, &group_info);
13403  hsize_t matG = group_info.nlinks;
13404 
13405  // Iterate over datasets in the group.
13406  for (int matg = 0; matg < matG; matg++) {
13407  nuckeylen = 1 + H5Lget_name_by_idx(matgroup, ".", H5_INDEX_NAME, H5_ITER_INC, matg,
13408  NULL, 0, H5P_DEFAULT);
13409  char * nkey = new char[nuckeylen];
13410  nuckeylen = H5Lget_name_by_idx(matgroup, ".", H5_INDEX_NAME, H5_ITER_INC, matg,
13411  nkey, nuckeylen, H5P_DEFAULT);
13412  nuckey = nkey;
13413  nucset = H5Dopen2(matgroup, nkey, H5P_DEFAULT);
13414  nucvalue = h5wrap::get_array_index<double>(nucset, row);
13415 
13416  if (nuckey == "Mass" || nuckey == "MASS" || nuckey == "mass")
13417  mass = nucvalue;
13418  else
13419  comp[pyne::nucname::id(nuckey)] = nucvalue;
13420 
13421  H5Dclose(nucset);
13422  delete[] nkey;
13423  };
13424 
13425  // Set meta data
13426  atoms_per_molecule = -1.0;
13427 };
13428 
13429 
13430 
13431 void pyne::Material::_load_comp_protocol1(hid_t db, std::string datapath, int row) {
13432  std::string nucpath;
13433  hid_t data_set = H5Dopen2(db, datapath.c_str(), H5P_DEFAULT);
13434 
13435  hsize_t data_offset[1] = {row};
13436  if (row < 0) {
13437  // Handle negative row indices
13438  hid_t data_space = H5Dget_space(data_set);
13439  hsize_t data_dims[1];
13440  H5Sget_simple_extent_dims(data_space, data_dims, NULL);
13441  data_offset[0] += data_dims[0];
13442  };
13443 
13444  // Grab the nucpath
13445  hid_t nuc_attr = H5Aopen(data_set, "nucpath", H5P_DEFAULT);
13446  H5A_info_t nuc_info;
13447  H5Aget_info(nuc_attr, &nuc_info);
13448  hsize_t nuc_attr_len = nuc_info.data_size;
13449  hid_t str_attr = H5Tcopy(H5T_C_S1);
13450  H5Tset_size(str_attr, nuc_attr_len);
13451  char * nucpathbuf = new char [nuc_attr_len];
13452  H5Aread(nuc_attr, str_attr, nucpathbuf);
13453  nucpath = std::string(nucpathbuf, nuc_attr_len);
13454  delete[] nucpathbuf;
13455 
13456  // Grab the nuclides
13457  std::vector<int> nuclides = h5wrap::h5_array_to_cpp_vector_1d<int>(db, nucpath, H5T_NATIVE_INT);
13458  int nuc_size = nuclides.size();
13459  hsize_t nuc_dims[1] = {nuc_size};
13460 
13461  // Get the data hyperslab
13462  hid_t data_hyperslab = H5Dget_space(data_set);
13463  hsize_t data_count[1] = {1};
13464  H5Sselect_hyperslab(data_hyperslab, H5S_SELECT_SET, data_offset, NULL, data_count, NULL);
13465 
13466  // Get memory space for writing
13467  hid_t mem_space = H5Screate_simple(1, data_count, NULL);
13468 
13469  // Get material type
13470  size_t material_data_size = sizeof(pyne::material_data) + sizeof(double)*nuc_size;
13471  hid_t desc = H5Tcreate(H5T_COMPOUND, material_data_size);
13472  hid_t comp_values_array_type = H5Tarray_create2(H5T_NATIVE_DOUBLE, 1, nuc_dims);
13473 
13474  // make the data table type
13475  H5Tinsert(desc, "mass", HOFFSET(pyne::material_data, mass), H5T_NATIVE_DOUBLE);
13476  H5Tinsert(desc, "density", HOFFSET(pyne::material_data, density),
13477  H5T_NATIVE_DOUBLE);
13478  H5Tinsert(desc, "atoms_per_molecule", HOFFSET(pyne::material_data, atoms_per_mol),
13479  H5T_NATIVE_DOUBLE);
13480  H5Tinsert(desc, "comp", HOFFSET(pyne::material_data, comp), comp_values_array_type);
13481 
13482  // make the data array, have to over-allocate
13483  material_data * mat_data = new material_data [material_data_size];
13484 
13485  // Finally, get data and put in on this instance
13486  H5Dread(data_set, desc, mem_space, data_hyperslab, H5P_DEFAULT, mat_data);
13487 
13488  mass = (*mat_data).mass;
13489  density = (*mat_data).density;
13490  atoms_per_molecule = (*mat_data).atoms_per_mol;
13491  for (int i = 0; i < nuc_size; i++)
13492  comp[nuclides[i]] = (double) (*mat_data).comp[i];
13493 
13494  delete[] mat_data;
13495  H5Tclose(str_attr);
13496 
13497  //
13498  // Get metadata from associated dataset, if available
13499  //
13500  std::string attrpath = datapath + "_metadata";
13501  bool attrpath_exists = h5wrap::path_exists(db, attrpath);
13502  if (!attrpath_exists)
13503  return;
13504 
13505  hid_t metadatapace, attrtype, metadataet, metadatalab, attrmemspace;
13506  int attrrank;
13507  hvl_t attrdata [1];
13508 
13509  attrtype = H5Tvlen_create(H5T_NATIVE_CHAR);
13510 
13511  // Get the metadata from the file
13512  metadataet = H5Dopen2(db, attrpath.c_str(), H5P_DEFAULT);
13513  metadatalab = H5Dget_space(metadataet);
13514  H5Sselect_hyperslab(metadatalab, H5S_SELECT_SET, data_offset, NULL, data_count, NULL);
13515  attrmemspace = H5Screate_simple(1, data_count, NULL);
13516  H5Dread(metadataet, attrtype, attrmemspace, metadatalab, H5P_DEFAULT, attrdata);
13517 
13518  // convert to in-memory JSON
13519  Json::Reader reader;
13520  reader.parse((char *) attrdata[0].p, (char *) attrdata[0].p+attrdata[0].len, metadata, false);
13521 
13522  // close attr data objects
13523  H5Fflush(db, H5F_SCOPE_GLOBAL);
13524  H5Dclose(metadataet);
13525  H5Sclose(metadatapace);
13526  H5Tclose(attrtype);
13527 
13528  // Close out the HDF5 file
13529  H5Fclose(db);
13530 };
13531 
13532 
13533 
13534 
13535 
13536 void pyne::Material::from_hdf5(char * filename, char * datapath, int row, int protocol) {
13537  std::string fname (filename);
13538  std::string dpath (datapath);
13539  from_hdf5(fname, dpath, row, protocol);
13540 };
13541 
13542 
13543 
13544 void pyne::Material::from_hdf5(std::string filename, std::string datapath, int row, int protocol) {
13545  // Turn off annoying HDF5 errors
13546  herr_t status;
13547  H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
13548 
13549  // Check that the file is there
13550  if (!pyne::file_exists(filename))
13551  throw pyne::FileNotFound(filename);
13552 
13553  // Check to see if the file is in HDF5 format.
13554  bool ish5 = H5Fis_hdf5(filename.c_str());
13555  if (!ish5)
13556  throw h5wrap::FileNotHDF5(filename);
13557 
13558  //Set file access properties so it closes cleanly
13559  hid_t fapl;
13560  fapl = H5Pcreate(H5P_FILE_ACCESS);
13561  H5Pset_fclose_degree(fapl,H5F_CLOSE_STRONG);
13562  // Open the database
13563  hid_t db = H5Fopen(filename.c_str(), H5F_ACC_RDONLY, fapl);
13564 
13565  bool datapath_exists = h5wrap::path_exists(db, datapath);
13566  if (!datapath_exists)
13567  throw h5wrap::PathNotFound(filename, datapath);
13568 
13569  // Clear current content
13570  comp.clear();
13571 
13572  // Load via various protocols
13573  if (protocol == 0)
13574  _load_comp_protocol0(db, datapath, row);
13575  else if (protocol == 1)
13576  _load_comp_protocol1(db, datapath, row);
13577  else
13579 
13580  // Close the database
13581  status = H5Fclose(db);
13582 
13583  // Renormalize the composition, just to be safe.
13584  norm_comp();
13585 };
13586 
13587 
13588 
13589 
13590 
13591 void pyne::Material::write_hdf5(char * filename, char * datapath, char * nucpath, float row, int chunksize) {
13592  std::string fname (filename);
13593  std::string groupname (datapath);
13594  std::string nuclist (nucpath);
13595  write_hdf5(fname, groupname, nuclist, row, chunksize);
13596 };
13597 
13598 
13599 
13600 void pyne::Material::write_hdf5(std::string filename, std::string datapath,
13601  std::string nucpath, float row, int chunksize) {
13602  int row_num = (int) row;
13603 
13604  // Turn off annoying HDF5 errors
13605  H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
13606 
13607  //Set file access properties so it closes cleanly
13608  hid_t fapl;
13609  fapl = H5Pcreate(H5P_FILE_ACCESS);
13610  H5Pset_fclose_degree(fapl,H5F_CLOSE_STRONG);
13611  // Create new/open datafile.
13612  hid_t db;
13613  if (pyne::file_exists(filename)) {
13614  bool ish5 = H5Fis_hdf5(filename.c_str());
13615  if (!ish5)
13616  throw h5wrap::FileNotHDF5(filename);
13617  db = H5Fopen(filename.c_str(), H5F_ACC_RDWR, fapl);
13618  }
13619  else
13620  db = H5Fcreate(filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
13621 
13622  //
13623  // Read in nuclist if available, write it out if not
13624  //
13625  bool nucpath_exists = h5wrap::path_exists(db, nucpath);
13626  std::vector<int> nuclides;
13627  int nuc_size;
13628  hsize_t nuc_dims[1];
13629 
13630  if (nucpath_exists) {
13631  nuclides = h5wrap::h5_array_to_cpp_vector_1d<int>(db, nucpath, H5T_NATIVE_INT);
13632  nuc_size = nuclides.size();
13633  nuc_dims[0] = nuc_size;
13634  } else {
13635  nuclides = std::vector<int>();
13636  for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++)
13637  nuclides.push_back(i->first);
13638  nuc_size = nuclides.size();
13639 
13640  // Create the data if it doesn't exist
13641  int nuc_data [nuc_size];
13642  for (int n = 0; n != nuc_size; n++)
13643  nuc_data[n] = nuclides[n];
13644  nuc_dims[0] = nuc_size;
13645  hid_t nuc_space = H5Screate_simple(1, nuc_dims, NULL);
13646  hid_t nuc_set = H5Dcreate2(db, nucpath.c_str(), H5T_NATIVE_INT, nuc_space,
13647  H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
13648  H5Dwrite(nuc_set, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, nuc_data);
13649  H5Fflush(db, H5F_SCOPE_GLOBAL);
13650  };
13651 
13652 
13653  //
13654  // Write out the data itself to the file
13655  //
13656  hid_t data_set, data_space, data_hyperslab;
13657  int data_rank = 1;
13658  hsize_t data_dims[1] = {1};
13659  hsize_t data_max_dims[1] = {H5S_UNLIMITED};
13660  hsize_t data_offset[1] = {0};
13661 
13662  size_t material_data_size = sizeof(pyne::material_data) + sizeof(double)*nuc_size;
13663  hid_t desc = H5Tcreate(H5T_COMPOUND, material_data_size);
13664  hid_t comp_values_array_type = H5Tarray_create2(H5T_NATIVE_DOUBLE, 1, nuc_dims);
13665 
13666  // make the data table type
13667  H5Tinsert(desc, "mass", HOFFSET(pyne::material_data, mass), H5T_NATIVE_DOUBLE);
13668  H5Tinsert(desc, "density", HOFFSET(pyne::material_data, density),
13669  H5T_NATIVE_DOUBLE);
13670  H5Tinsert(desc, "atoms_per_molecule", HOFFSET(pyne::material_data, atoms_per_mol),
13671  H5T_NATIVE_DOUBLE);
13672  H5Tinsert(desc, "comp", HOFFSET(pyne::material_data, comp),
13673  comp_values_array_type);
13674 
13675  material_data * mat_data = new material_data[material_data_size];
13676  (*mat_data).mass = mass;
13677  (*mat_data).density = density;
13678  (*mat_data).atoms_per_mol = atoms_per_molecule;
13679  for (int n = 0; n != nuc_size; n++) {
13680  if (0 < comp.count(nuclides[n]))
13681  (*mat_data).comp[n] = comp[nuclides[n]];
13682  else
13683  (*mat_data).comp[n] = 0.0;
13684  };
13685 
13686  // get / make the data set
13687  bool datapath_exists = h5wrap::path_exists(db, datapath);
13688  if (datapath_exists) {
13689  data_set = H5Dopen2(db, datapath.c_str(), H5P_DEFAULT);
13690  data_space = H5Dget_space(data_set);
13691  data_rank = H5Sget_simple_extent_dims(data_space, data_dims, data_max_dims);
13692 
13693  // Determine the row size.
13694  if (std::signbit(row))
13695  row_num = data_dims[0] + row; // careful, row is negative
13696 
13697  if (data_dims[0] <= row_num) {
13698  // row == -0, extend to data set so that we can append, or
13699  // row_num is larger than current dimension, resize to accomodate.
13700  data_dims[0] = row_num + 1;
13701  H5Dset_extent(data_set, data_dims);
13702  }
13703 
13704  data_offset[0] = row_num;
13705  } else {
13706  // Get full space
13707  data_space = H5Screate_simple(1, data_dims, data_max_dims);
13708 
13709  // Make data set properties to enable chunking
13710  hid_t data_set_params = H5Pcreate(H5P_DATASET_CREATE);
13711  hsize_t chunk_dims[1] ={chunksize};
13712  H5Pset_chunk(data_set_params, 1, chunk_dims);
13713  H5Pset_deflate(data_set_params, 1);
13714 
13715  // Create the data set
13716  data_set = H5Dcreate2(db, datapath.c_str(), desc, data_space, H5P_DEFAULT,
13717  data_set_params, H5P_DEFAULT);
13718  H5Dset_extent(data_set, data_dims);
13719 
13720  // Add attribute pointing to nuc path
13721  hid_t nuc_attr_type = H5Tcopy(H5T_C_S1);
13722  H5Tset_size(nuc_attr_type, nucpath.length());
13723  hid_t nuc_attr_space = H5Screate(H5S_SCALAR);
13724  hid_t nuc_attr = H5Acreate2(data_set, "nucpath", nuc_attr_type, nuc_attr_space,
13725  H5P_DEFAULT, H5P_DEFAULT);
13726  H5Awrite(nuc_attr, nuc_attr_type, nucpath.c_str());
13727  H5Fflush(db, H5F_SCOPE_GLOBAL);
13728  };
13729 
13730  // Get the data hyperslab
13731  data_hyperslab = H5Dget_space(data_set);
13732  hsize_t data_count[1] = {1};
13733  H5Sselect_hyperslab(data_hyperslab, H5S_SELECT_SET, data_offset, NULL, data_count, NULL);
13734 
13735  // Get a memory space for writing
13736  hid_t mem_space = H5Screate_simple(1, data_count, data_max_dims);
13737 
13738  // Write the row...
13739  H5Dwrite(data_set, desc, mem_space, data_hyperslab, H5P_DEFAULT, mat_data);
13740 
13741  // Close out the Dataset
13742  H5Fflush(db, H5F_SCOPE_GLOBAL);
13743  H5Dclose(data_set);
13744  H5Sclose(data_space);
13745  H5Tclose(desc);
13746 
13747  //
13748  // Write out the metadata to the file
13749  //
13750  std::string attrpath = datapath + "_metadata";
13751  hid_t metadatapace, attrtype, metadataet, metadatalab, attrmemspace;
13752  int attrrank;
13753 
13754  attrtype = H5Tvlen_create(H5T_NATIVE_CHAR);
13755 
13756  // get / make the data set
13757  bool attrpath_exists = h5wrap::path_exists(db, attrpath);
13758  if (attrpath_exists) {
13759  metadataet = H5Dopen2(db, attrpath.c_str(), H5P_DEFAULT);
13760  metadatapace = H5Dget_space(metadataet);
13761  attrrank = H5Sget_simple_extent_dims(metadatapace, data_dims, data_max_dims);
13762 
13763  if (data_dims[0] <= row_num) {
13764  // row == -0, extend to data set so that we can append, or
13765  // row_num is larger than current dimension, resize to accomodate.
13766  data_dims[0] = row_num + 1;
13767  H5Dset_extent(metadataet, data_dims);
13768  }
13769 
13770  data_offset[0] = row_num;
13771  } else {
13772  hid_t metadataetparams;
13773  hsize_t attrchunkdims [1];
13774 
13775  // Make data set properties to enable chunking
13776  metadataetparams = H5Pcreate(H5P_DATASET_CREATE);
13777  attrchunkdims[0] = chunksize;
13778  H5Pset_chunk(metadataetparams, 1, attrchunkdims);
13779  H5Pset_deflate(metadataetparams, 1);
13780 
13781  hvl_t attrfillvalue [1];
13782  attrfillvalue[0].len = 3;
13783  attrfillvalue[0].p = (char *) "{}\n";
13784  H5Pset_fill_value(metadataetparams, attrtype, &attrfillvalue);
13785 
13786  // make dataset
13787  metadatapace = H5Screate_simple(1, data_dims, data_max_dims);
13788  metadataet = H5Dcreate2(db, attrpath.c_str(), attrtype, metadatapace,
13789  H5P_DEFAULT, metadataetparams, H5P_DEFAULT);
13790  H5Dset_extent(metadataet, data_dims);
13791  H5Pclose(metadataetparams);
13792  };
13793 
13794  // set the attr string
13795  hvl_t attrdata [1];
13796  Json::FastWriter writer;
13797  std::string metadatatr = writer.write(metadata);
13798  attrdata[0].p = (char *) metadatatr.c_str();
13799  attrdata[0].len = metadatatr.length();
13800 
13801  // write the attr
13802  metadatalab = H5Dget_space(metadataet);
13803  H5Sselect_hyperslab(metadatalab, H5S_SELECT_SET, data_offset, NULL, data_count, NULL);
13804  attrmemspace = H5Screate_simple(1, data_count, data_max_dims);
13805  H5Dwrite(metadataet, attrtype, attrmemspace, metadatalab, H5P_DEFAULT, attrdata);
13806 
13807  // close attr data objects
13808  H5Fflush(db, H5F_SCOPE_GLOBAL);
13809  H5Dclose(metadataet);
13810  H5Sclose(metadatapace);
13811  H5Tclose(attrtype);
13812 
13813  // Close out the HDF5 file
13814  H5Fclose(db);
13815  // Remember the milk!
13816  // ...by which I mean to deallocate
13817  delete[] mat_data;
13818 };
13819 
13820 std::string pyne::Material::mcnp(std::string frac_type) {
13821  //////////////////// Begin card creation ///////////////////////
13822  std::ostringstream oss;
13823  // 'name'
13824  if (metadata.isMember("name")) {
13825  oss << "C name: " << metadata["name"].asString() << std::endl;
13826  }
13827  // 'density'
13828  if (density != -1.0) {
13829  std::stringstream ds;
13830  ds << std::setprecision(1) << std::fixed << "C density = " << density << std::endl;
13831  oss << ds.str();
13832  }
13833  // 'source'
13834  if (metadata.isMember("source")) {
13835  oss << "C source: " << metadata["source"].asString() << std::endl;
13836  }
13837  // Metadata comments
13838  if (metadata.isMember("comments")) {
13839  std::string comment_string = "comments: " + metadata["comments"].asString();
13840  // Include as is if short enough
13841  if (comment_string.length() <= 77) {
13842  oss << "C " << comment_string << std::endl;
13843  }
13844  else { // otherwise create a remainder string and iterate/update it
13845  oss << "C " << comment_string.substr(0,77) << std::endl;
13846  std::string remainder_string = comment_string.substr(77);
13847  while (remainder_string.length() > 77) {
13848  oss << "C " << remainder_string.substr(0,77) << std::endl;
13849  remainder_string.erase(0,77);
13850  }
13851  if (remainder_string.length() > 0) {
13852  oss << "C " << remainder_string << std::endl;
13853  }
13854  }
13855  }
13856 
13857  // Metadata mat_num
13858  oss << "m";
13859  if (metadata.isMember("mat_number")) {
13860  int mat_num = metadata["mat_number"].asInt();
13861  oss << mat_num << std::endl;
13862  } else {
13863  oss << "?" << std::endl;
13864  }
13865 
13866  // Set up atom or mass frac map
13867  std::map<int, double> fracs;
13868  std::string frac_sign;
13869 
13870  if ("atom" == frac_type) {
13871  fracs = to_atom_frac();
13872  frac_sign = "";
13873  } else {
13874  fracs = comp;
13875  frac_sign = "-";
13876  }
13877 
13878  // iterate through frac map
13879  // This is an awkward pre-C++11 way to put an int to a string
13880  std::stringstream ss;
13881  std::string nucmcnp;
13882  std::string table_item;
13883  for(pyne::comp_iter i = fracs.begin(); i != fracs.end(); ++i) {
13884  if (i->second > 0.0) {
13885  // Clear first
13886  ss.str(std::string());
13887  ss.str("");
13888  ss << pyne::nucname::mcnp(i->first);
13889  nucmcnp = ss.str();
13890 
13891  int mcnp_id;
13892  mcnp_id = pyne::nucname::mcnp(i->first);
13893  // Spaces are important for tests
13894  table_item = metadata["table_ids"][nucmcnp].asString();
13895  if (!table_item.empty()) {
13896  oss << " " << mcnp_id << "." << table_item << " ";
13897  } else {
13898  oss << " " << mcnp_id << " ";
13899  }
13900  // The int needs a little formatting
13901  std::stringstream fs;
13902  fs << std::setprecision(4) << std::scientific << frac_sign << i->second \
13903  << std::endl;
13904  oss << fs.str();
13905  }
13906  }
13907 
13908  return oss.str();
13909 }
13910 
13911 ///---------------------------------------------------------------------------//
13912 /// Create a set out of the static string array.
13913 std::set<std::string> fluka_builtin(pyne::fluka_mat_strings,
13915 
13916 ///---------------------------------------------------------------------------//
13917 /// not_fluka_builtin
13918 ///---------------------------------------------------------------------------//
13919 /// Convenience function
13920 /// This is written as a negative because that is what we care about
13921 bool pyne::Material::not_fluka_builtin(std::string fluka_name) {
13922  return (fluka_builtin.find(fluka_name) == fluka_builtin.end());
13923 }
13924 
13925 ///---------------------------------------------------------------------------//
13926 /// fluka
13927 ///---------------------------------------------------------------------------//
13928 /// Main external call
13929 std::string pyne::Material::fluka(int id, std::string frac_type) {
13930  std::stringstream rs;
13931 
13932  // Element, one nucid
13933  if (comp.size() == 1) {
13934  rs << fluka_material_str(id);
13935  } else if (comp.size() > 1) {
13936  // Compound
13937  rs << fluka_compound_str(id, frac_type);
13938  } else {
13939  rs << "There is no nuclide information in the Material Object" << std::endl;
13940  }
13941  return rs.str();
13942 }
13943 
13944 ///---------------------------------------------------------------------------//
13945 /// fluka_material_str
13946 ///---------------------------------------------------------------------------//
13947 ///
13948 /// Requirement: the material upon which this function is called has
13949 /// exactly one nucid component, i.e. it is elemental
13950 /// Do not assume fluka_name is defined in the metadata. This function
13951 /// may be called from a user-defined material, i.e. on that is not
13952 /// read out of a UW^2-tagged geometry file, and thus does not have
13953 /// certain metadata.
13955  std::stringstream ms;
13956  std::string fluka_name; // needed to determine if built-in
13957 
13958  int nucid = comp.begin()->first;
13959 
13960  // NOTE: first part of 'if' may never be called
13961  if (metadata.isMember("fluka_name")) {
13962  fluka_name = metadata["fluka_name"].asString();
13963  } else { // Should be elemental
13964  if (comp.size() > 1 ) {
13965  std::cerr << "Error: this mix is a compound, there should be a fluka_name defined."
13966  << std::endl;
13967  return ms.str();
13968  }
13969  fluka_name = nucname::fluka(nucid);
13970  }
13971 
13972  if (not_fluka_builtin(fluka_name)) {
13973  ms << fluka_material_component(id, nucid, fluka_name);
13974  }
13975 
13976  // could be empty
13977  return ms.str();
13978 }
13979 
13980 ///---------------------------------------------------------------------------//
13981 /// fluka_material_component
13982 ///---------------------------------------------------------------------------//
13983 /// Material has only one component,
13984 /// Density is either object density or it is ignored ==> use object density
13985 /// This function is not called for a compound, but it is called on the
13986 /// material-ized components of compounds
13987 std::string pyne::Material::fluka_material_component(int fid, int nucid,
13988  std::string fluka_name) {
13989  int znum = pyne::nucname::znum(nucid);
13990 
13991  double atomic_mass;
13992  if (0 != pyne::NUC_DATA_PATH.length()) {
13993  // for compounds (i.e., unrecognized nucids), this will be 0
13994  atomic_mass = pyne::atomic_mass(nucid);
13995  } else {
13996  atomic_mass = 1.0;
13997  }
13998 
13999  return fluka_material_line(znum, atomic_mass, fid, fluka_name);
14000 }
14001 
14002 ///---------------------------------------------------------------------------//
14003 /// fluka_material_line
14004 ///---------------------------------------------------------------------------//
14005 /// Given all the info, return the Material string
14007  int fid, std::string fluka_name) {
14008  std::stringstream ls;
14009 
14010  if (metadata.isMember("comments") ) {
14011  std::string comment = metadata["comments"].asString();
14012  ls << "* " << comment;
14013  ls << std::endl;
14014  }
14015  ls << std::setw(10) << std::left << "MATERIAL";
14016  ls << std::setprecision(0) << std::fixed << std::showpoint <<
14017  std::setw(10) << std::right << (float)znum;
14018 
14019  ls << fluka_format_field(atomic_mass);
14020  // Note this is the current object density, and may or may not be meaningful
14021  ls << fluka_format_field(std::sqrt(density*density));
14022 
14023  ls << std::setprecision(0) << std::fixed << std::showpoint <<
14024  std::setw(10) << std::right << (float)fid;
14025  ls << std::setw(10) << std::right << "";
14026  ls << std::setw(10) << std::right << "";
14027  ls << std::setw(10) << std::left << fluka_name << std::endl;
14028 
14029  return ls.str();
14030 }
14031 
14032 ///---------------------------------------------------------------------------//
14033 /// fluka_format_field
14034 ///---------------------------------------------------------------------------//
14035 /// Convenience function that returns a 10-character formatted string
14036 /// 999 -> 999.
14037 /// 999.12 -> 999.12
14038 /// 999.123 -> 999.123
14039 /// 999.1234 -> 999.123
14040 std::string pyne::Material::fluka_format_field(float field) {
14041  std::stringstream ls;
14042  double intpart;
14043  modf (field, &intpart);
14044  if (field == intpart) {
14045  ls << std::setprecision(0) << std::fixed << std::showpoint
14046  << std::setw(10) << std::right << field;
14047  } else {
14048  // This will print however many digits after the decimal, up to a max of six
14049  ls.unsetf(std::ios::showpoint);
14050  ls.unsetf(std::ios::floatfield);
14051  ls.precision(6);
14052  ls << std::setw(10) << std::right << field;
14053  }
14054 
14055  return ls.str();
14056 }
14057 
14058 ///---------------------------------------------------------------------------//
14059 /// fluka_compound_str
14060 ///---------------------------------------------------------------------------//
14061 /// Returns
14062 /// -- MATERIAL line for compound
14063 /// -- COMPOUND lines
14064 std::string pyne::Material::fluka_compound_str(int id, std::string frac_type) {
14065  std::stringstream ss;
14066  std::map<double, std::string> frac_name_map;
14067  std::string compound_string = "";
14068  std::vector<std::string> material_names;
14069 
14070  // The nucid doesn't make sense for a compound
14071  int znum = 1;
14072  double atomic_mass = 1.;
14073  // This better be true
14074  std::string compound_name;
14075  if (metadata.isMember("fluka_name")) {
14076  compound_name = metadata["fluka_name"].asString();
14077  } else {
14078  std::cerr << "Error: metadata \"fluka_name\" expected." << std::endl;
14079  compound_name = "NotFound";
14080  }
14081  ss << fluka_material_line(znum, atomic_mass, id, compound_name);
14082 
14083  std::string frac_sign;
14084  if ("atom" == frac_type) {
14085  frac_sign = "";
14086  } else {
14087  frac_sign = "-";
14088  }
14089 
14090  std::stringstream temp_s;
14091  temp_s << std::scientific;
14092  temp_s << std::setprecision(3);
14093 
14094  int counter = comp.size();
14095  pyne::comp_iter nuc = comp.begin();
14096  // This will pick up multiples of 3 components
14097  while (counter >= 3) {
14098  ss << std::setw(10) << std::left << "COMPOUND";
14099 
14100  temp_s << frac_sign << nuc->second;
14101 
14102  ss << std::setw(10) << std::right << temp_s.str();
14103  ss << std::setw(10) << std::right << nucname::fluka(nuc->first);
14104  nuc++;
14105  temp_s.str(""); // reset the stringstream for reuse
14106 
14107  temp_s << frac_sign << nuc->second;
14108  ss << std::setw(10) << std::right << temp_s.str();
14109  ss << std::setw(10) << std::right << nucname::fluka(nuc->first);
14110  nuc++;
14111  temp_s.str("");
14112 
14113  temp_s << frac_sign << nuc->second;
14114  ss << std::setw(10) << std::right << temp_s.str();
14115  ss << std::setw(10) << std::right << nucname::fluka(nuc->first);
14116  nuc++;
14117  temp_s.str("");
14118 
14119  ss << std::setw(10) << std::left << compound_name;
14120  ss << std::endl;
14121 
14122  counter -= 3;
14123  }
14124 
14125  // Get the last (or only, as the case may be) one or two fractions
14126  if (nuc != comp.end()) {
14127  ss << std::setw(10) << std::left << "COMPOUND";
14128  temp_s << frac_sign << nuc->second;
14129  ss << std::setw(10) << std::right << temp_s.str();
14130  ss << std::setw(10) << std::right << nucname::fluka(nuc->first);
14131  nuc++;
14132  temp_s.str("");
14133 
14134  if (nuc != comp.end()) {
14135  temp_s << frac_sign << nuc->second;
14136  ss << std::setw(10) << std::right << temp_s.str();
14137  ss << std::setw(10) << std::right << nucname::fluka(nuc->first);
14138  nuc++;
14139  temp_s.str("");
14140  } else {
14141  ss << std::setw(10) << std::right << "";
14142  ss << std::setw(10) << std::right << "";
14143  }
14144 
14145  ss << std::setw(10) << std::right << "";
14146  ss << std::setw(10) << std::right << "";
14147  ss << std::setw(10) << std::left << compound_name;
14148  ss << std::endl;
14149  }
14150 
14151  return ss.str();
14152 }
14153 
14154 void pyne::Material::from_text(char * filename) {
14155  std::string fname (filename);
14156  from_text(fname);
14157 };
14158 
14159 
14160 void pyne::Material::from_text(std::string filename) {
14161  // Check that the file is there
14162  if (!pyne::file_exists(filename))
14163  throw pyne::FileNotFound(filename);
14164 
14165  // New filestream
14166  std::ifstream f;
14167  f.open(filename.c_str());
14168 
14169  // Read in
14170  comp.clear();
14171  std::string keystr, valstr;
14172 
14173  while ( !f.eof() ) {
14174  f >> keystr;
14175 
14176  if (0 == keystr.length())
14177  continue;
14178 
14179  if (keystr == "Mass"){
14180  f >> valstr;
14181  mass = pyne::to_dbl(valstr);
14182  } else if (keystr == "Density") {
14183  f >> valstr;
14184  density = pyne::to_dbl(valstr);
14185  } else if (keystr == "APerM") {
14186  f >> valstr;
14187  atoms_per_molecule = pyne::to_dbl(valstr);
14188  } else if (pyne::nucname::isnuclide(keystr)) {
14189  f >> valstr;
14190  comp[pyne::nucname::id(keystr)] = pyne::to_dbl(valstr);
14191  } else {
14192  getline(f, valstr);
14193  valstr= valstr.substr(0, valstr.length()-1);
14194  metadata[keystr]= valstr;
14195  continue;
14196  }
14197  };
14198 
14199  f.close();
14200  norm_comp();
14201 };
14202 
14203 
14204 
14205 void pyne::Material::write_text(char * filename) {
14206  std::string fname (filename);
14207  write_text(fname);
14208 };
14209 
14210 
14211 void pyne::Material::write_text(std::string filename) {
14212  std::ofstream f;
14213  f.open(filename.c_str(), std::ios_base::trunc);
14214 
14215  Json::Reader reader;
14216  std::vector<std::string> obj = metadata.getMemberNames();
14217 
14218  if (0 <= mass)
14219  f << "Mass " << mass << "\n";
14220 
14221  if (0 <= density)
14222  f << "Density " << density << "\n";
14223 
14224  if (0 <= atoms_per_molecule)
14225  f << "APerM " << atoms_per_molecule << "\n";
14226 
14227  for (int i=0; i < metadata.size(); i=i+2){
14228  f <<metadata.get(obj.at(i), "") << metadata.get(obj.at(i+1), "");
14229  }
14230 
14231  std::string nuc_name;
14232  for(pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
14233  nuc_name = pyne::nucname::name( i->first ) + " ";
14234  while (nuc_name.length() < 8)
14235  nuc_name += " ";
14236  f << nuc_name << i->second << "\n";
14237  };
14238 
14239  f.close();
14240 };
14241 
14242 
14244  Json::Value::Members keys = json["comp"].getMemberNames();
14245  Json::Value::Members::const_iterator ikey = keys.begin();
14246  Json::Value::Members::const_iterator ikey_end = keys.end();
14247  comp.clear();
14248  for (; ikey != ikey_end; ++ikey)
14249  comp[nucname::id(*ikey)] = json["comp"][*ikey].asDouble();
14250  norm_comp();
14251  mass = json["mass"].asDouble();
14252  density = json["density"].asDouble();
14253  atoms_per_molecule = json["atoms_per_molecule"].asDouble();
14254  metadata = json["metadata"];
14255 };
14256 
14257 
14261  json["mass"] = mass;
14262  json["density"] = density;
14263  json["atoms_per_molecule"] = atoms_per_molecule;
14264  json["metadata"] = metadata;
14265  for(comp_iter i = comp.begin(); i != comp.end(); i++)
14266  jcomp[nucname::name(i->first)] = (i->second);
14267  json["comp"] = jcomp;
14268  return json;
14269 };
14270 
14271 
14272 void pyne::Material::from_json(char * filename) {
14273  std::string fname (filename);
14274  from_json(fname);
14275 };
14276 
14277 void pyne::Material::from_json(std::string filename) {
14278  if (!pyne::file_exists(filename))
14279  throw pyne::FileNotFound(filename);
14280  std::string s;
14281  std::ifstream f (filename.c_str(), std::ios::in | std::ios::binary);
14282  f.seekg(0, std::ios::end);
14283  s.resize(f.tellg());
14284  f.seekg(0, std::ios::beg);
14285  f.read(&s[0], s.size());
14286  f.close();
14287  Json::Reader reader;
14288  Json::Value json;
14289  reader.parse(s, json);
14290  load_json(json);
14291 };
14292 
14293 
14294 void pyne::Material::write_json(char * filename) {
14295  std::string fname (filename);
14296  write_json(fname);
14297 };
14298 
14299 void pyne::Material::write_json(std::string filename) {
14300  Json::Value json = dump_json();
14301  Json::StyledWriter writer;
14302  std::string s = writer.write(json);
14303  std::ofstream f;
14304  f.open(filename.c_str(), std::ios_base::trunc);
14305  f << s << "\n";
14306  f.close();
14307 };
14308 
14309 
14310 /************************/
14311 /*** Public Functions ***/
14312 /************************/
14313 
14314 /*--- Constructors ---*/
14315 
14317  // Empty Material constructor
14318  mass = -1.0;
14319  density = -1.0;
14320  atoms_per_molecule = -1.0;
14321  metadata = Json::Value(Json::objectValue);
14322 }
14323 
14324 
14325 pyne::Material::Material(pyne::comp_map cm, double m, double d, double apm,
14326  Json::Value attributes) {
14327  // Initializes the mass stream based on an isotopic component dictionary.
14328  comp = cm;
14329  mass = m;
14330  density=d;
14331  atoms_per_molecule = apm;
14332  metadata = attributes;
14333  if (!comp.empty())
14334  norm_comp();
14335 };
14336 
14337 
14338 
14339 pyne::Material::Material(char * filename, double m, double d, double apm,
14340  Json::Value attributes) {
14341  mass = m;
14342  density=d;
14343  atoms_per_molecule = apm;
14344  metadata = attributes;
14345 
14346  // Check that the file is there
14347  std::string fname (filename);
14348  if (!pyne::file_exists(fname))
14349  throw pyne::FileNotFound(fname);
14350 
14351  // Check to see if the file is in HDF5 format.
14352  bool ish5 = H5Fis_hdf5(fname.c_str());
14353  if (ish5)
14354  from_hdf5(fname);
14355  else
14356  from_text(fname);
14357 };
14358 
14359 
14360 pyne::Material::Material(std::string filename, double m, double d, double apm,
14361  Json::Value attributes) {
14362  // Initializes the mass stream based on an isotopic composition file with a string name.
14363  mass = m;
14364  density=d;
14365  atoms_per_molecule = apm;
14366  metadata = attributes;
14367 
14368  // Check that the file is there
14369  if (!pyne::file_exists(filename))
14370  throw pyne::FileNotFound(filename);
14371 
14372  // Check to see if the file is in HDF5 format.
14373  bool ish5 = H5Fis_hdf5(filename.c_str());
14374  if (ish5)
14375  from_hdf5(filename);
14376  else
14377  from_text(filename);
14378 };
14379 
14380 
14382 };
14383 
14384 
14385 
14386 /*--- Method definitions ---*/
14387 
14388 
14389 std::ostream& operator<<(std::ostream& os, pyne::Material mat) {
14390  //print the Mass Stream to stdout
14391  os << "\tMass: " << mat.mass << "\n";
14392  os << "\t---------\n";
14393  for(pyne::comp_iter i = mat.comp.begin(); i != mat.comp.end(); i++)
14394  {
14395  os << "\t" << pyne::nucname::name( i->first ) << "\t" << i->second << "\n";
14396  };
14397  return os;
14398 };
14399 
14400 // Note this refines << for an inheritor of std::ostream.
14401 std::ostringstream& operator<<(std::ostringstream& os, pyne::Material mat) {
14402  return os;
14403 }
14404 
14406  // normalizes the mass
14407  mass = 1.0;
14408 };
14409 
14410 
14412  // bypass calculation if already normalized.
14413  if (mass == 1.0)
14414  return comp;
14415 
14416  pyne::comp_map cm;
14417  for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
14418  cm[i->first] = (i->second) * mass;
14419  };
14420  return cm;
14421 };
14422 
14423 
14424 
14427  double masspermole = mass * pyne::N_A;
14428  for (pyne::comp_iter i = comp.begin(); i != comp.end(); ++i) {
14429  act[i->first] = masspermole * (i->second) * decay_const(i->first) / \
14430  atomic_mass(i->first);
14431  }
14432  return act;
14433 }
14434 
14435 
14437  pyne::comp_map dh;
14438  double masspermole = mass * pyne::N_A;
14439  for (pyne::comp_iter i = comp.begin(); i != comp.end(); ++i) {
14440  dh[i->first] = pyne::MeV_per_MJ * masspermole * (i->second) * \
14441  decay_const(i->first) * q_val(i->first) / \
14442  atomic_mass(i->first);
14443  }
14444  return dh;
14445 }
14446 
14447 
14448 pyne::comp_map pyne::Material::dose_per_g(std::string dose_type, int source) {
14450  const double pCi_per_Bq = 27.027027;
14451  if (dose_type == "ext_air") {
14452  for (pyne::comp_iter i = comp.begin(); i != comp.end(); ++i) {
14453  dose[i->first] = Ci_per_Bq * pyne::N_A * (i->second) * \
14454  decay_const(i->first) * ext_air_dose(i->first, source) / \
14455  atomic_mass(i->first);
14456  }
14457  } else if (dose_type == "ext_soil") {
14458  for (pyne::comp_iter i = comp.begin(); i != comp.end(); ++i) {
14459  dose[i->first] = Ci_per_Bq * pyne::N_A * (i->second) * \
14460  decay_const(i->first) * ext_soil_dose(i->first, source) / \
14461  atomic_mass(i->first);
14462  }
14463  } else if (dose_type == "ingest") {
14464  for (pyne::comp_iter i = comp.begin(); i != comp.end(); ++i) {
14465  dose[i->first] = pCi_per_Bq * pyne::N_A * (i->second) * \
14466  decay_const(i->first) * ingest_dose(i->first, source) / \
14467  atomic_mass(i->first);
14468  }
14469  } else if (dose_type == "inhale") {
14470  for (pyne::comp_iter i = comp.begin(); i != comp.end(); ++i) {
14471  dose[i->first] = pCi_per_Bq * pyne::N_A * (i->second) * \
14472  decay_const(i->first) * inhale_dose(i->first, source) / \
14473  atomic_mass(i->first);
14474  }
14475  } else {
14476  throw std::invalid_argument("Dose type must be one of: ext_air, ext_soil, ingest, inhale.");
14477  }
14478  return dose;
14479 }
14480 
14481 
14483  // Calculate the atomic weight of the Material
14484  double inverseA = 0.0;
14485 
14486  for (pyne::comp_iter nuc = comp.begin(); nuc != comp.end(); nuc++)
14487  inverseA += (nuc->second) / pyne::atomic_mass(nuc->first);
14488 
14489  if (inverseA == 0.0)
14490  return inverseA;
14491 
14492  // select the atoms per mol
14493  double atsperm = 1.0; // default to 1.0
14494  if (0.0 <= apm) {
14495  atsperm = apm; // take the function argument, if valid
14496  if (atoms_per_molecule < 0.0)
14497  atoms_per_molecule = apm; // Store the function argument on class, if class has no value
14498  } else if (0.0 <= atoms_per_molecule)
14499  atsperm = atoms_per_molecule; // select the class's value
14500 
14501  return atsperm / inverseA;
14502 };
14503 
14504 
14506  // Expands the natural elements of a material and returns a new material note
14507  // that this implementation relies on the fact that maps of ints are stored in
14508  // a sorted manner in C++.
14509  int n, nabund, znuc, zabund;
14510  comp_map newcomp;
14511  std::map<int, double>::iterator abund_itr, abund_end;
14512  if (pyne::natural_abund_map.empty())
14514  abund_itr = pyne::natural_abund_map.begin();
14515  abund_end = pyne::natural_abund_map.end();
14516  zabund = nucname::znum((*abund_itr).first);
14517  for (comp_iter nuc = comp.begin(); nuc != comp.end(); nuc++) {
14518  if(abund_itr == abund_end)
14519  newcomp.insert(*nuc);
14520  else if(0 == nucname::anum((*nuc).first)) {
14521  n = (*nuc).first;
14522  znuc = nucname::znum(n);
14523  if (znuc < zabund) {
14524  newcomp.insert(*nuc);
14525  continue;
14526  }
14527  while(zabund <= znuc) {
14528  nabund = (*abund_itr).first;
14529  if (zabund == znuc && 0 != nucname::anum(nabund) && 0.0 != (*abund_itr).second)
14530  newcomp[nabund] = (*abund_itr).second * (*nuc).second * \
14531  atomic_mass(nabund) / atomic_mass(n);
14532  else if (n == nabund && 0.0 == (*abund_itr).second)
14533  newcomp.insert(*nuc);
14534  abund_itr++;
14535  if (abund_itr == abund_end) {
14536  zabund = INT_MAX;
14537  break;
14538  }
14539  zabund = nucname::znum(nabund);
14540  };
14541  } else
14542  newcomp.insert(*nuc);
14543  };
14544  return Material(newcomp, mass, density, atoms_per_molecule, metadata);
14545 };
14546 
14548  ////////////////////////////////////////////////////////////////////////
14549  // Assumptions
14550  // - list passed in is of nucid's formed from the znum-anum of
14551  // Fluka-named isotopes, since we want to preserve the full
14552  // nucid of any such material in the problem
14553  // Algorithm
14554  // for each component listed in this material that has a nonzero frac or
14555  // weight amount, look at its 'stripped' nucid, that is, the last four
14556  // places replaced by zeros.
14557  // if it's on the exception list, copy the component
14558  // else it is to be collapsed
14559  // => add its frac to the component of the znum
14560  //
14561  // * When from_hdf5 reads from a file the comp iterator will produce a
14562  // hit for EVERY nucid in EVERY material in the file. Only the nucids
14563  // belonging to the CURRENT material have a nonzero fraction/mass amount
14564  /////////////////////////////////////////////////////////////////////////
14565  pyne::comp_map cm;
14566 
14567  for (pyne::comp_iter ptr = comp.begin(); ptr != comp.end(); ptr++) {
14568  if (0 < ptr->second) {
14569  // There is a nonzero amount of this nucid in the current material,
14570  // check if znum and anum are in the exception list,
14571  int cur_stripped_id = nucname::znum(ptr->first)*10000000
14572  + nucname::anum(ptr->first)*10000;
14573  if (0 < exception_ids.count(cur_stripped_id)) {
14574  // The znum/anum combination identify the current material as a
14575  // fluka-named exception list => copy, don't collapse
14576  cm[ptr->first] = (ptr->second) * mass;
14577  } else {
14578  // Not on exception list => add frac to id-component
14579  int znum_id = nucname::id(nucname::znum(ptr->first));
14580  cm[znum_id] += (ptr->second) * mass;
14581  }
14582  }
14583  }
14584  // Copy
14585  pyne::Material collapsed = pyne::Material(cm, mass, density,
14586  atoms_per_molecule, metadata);
14587  return collapsed;
14588 }
14589 
14590 // Wrapped version for calling from python
14592  std::set<int> nucvec;
14593  // Set first pointer to first int pointed to by arg
14594  int *int_ptr = *int_ptr_arry;
14595  while (int_ptr != NULL)
14596  {
14597  nucvec.insert(*int_ptr);
14598  int_ptr++;
14599  }
14600  return collapse_elements(nucvec);
14601 }
14602 
14603 double pyne::Material::mass_density(double num_dens, double apm) {
14604  if (0.0 <= num_dens) {
14605  double mw = molecular_mass(apm);
14606  density = num_dens * mw / pyne::N_A / atoms_per_molecule;
14607  };
14608  return density;
14609 };
14610 
14611 
14612 double pyne::Material::number_density(double mass_dens, double apm) {
14613  if (0 <= mass_dens)
14614  density = mass_dens;
14615  double mw = molecular_mass(apm);
14616  double num_dens = density * pyne::N_A * atoms_per_molecule / mw;
14617  return num_dens;
14618 };
14619 
14620 
14621 /*--- Stub-Stream Computation ---*/
14622 
14624  // Grabs a sub-material from this mat based on a set of integers.
14625  // Integers can either be of id form -OR- they can be a z-numer (is 8 for O, 93 for Np, etc).
14626 
14627  pyne::comp_map cm;
14628  for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
14629  if ( 0 < nucset.count(i->first) )
14630  cm[i->first] = (i->second) * mass;
14631  };
14632 
14633  return pyne::Material(cm, -1, -1);
14634 };
14635 
14636 
14637 
14638 pyne::Material pyne::Material::sub_mat(std::set<std::string> nucset) {
14639  // Grabs a substream from this stream based on a set of strings.
14640  // Strings can be of any form.
14641  std::set<int> iset;
14642  for (std::set<std::string>::iterator i = nucset.begin(); i != nucset.end(); i++) {
14643  iset.insert(pyne::nucname::id(*i));
14644  };
14645 
14646  return sub_mat(iset);
14647 };
14648 
14649 
14650 
14651 pyne::Material pyne::Material::set_mat (std::set<int> nucset, double value) {
14652  // Sets a sub-material from this mat based on a set of integers.
14653  // Integers can either be of id form -OR- they can be a z-numer (is 8 for O, 93 for Np, etc).
14654  // n is the name of the new material.
14655 
14656  pyne::comp_map cm;
14657 
14658  // Add non-set components
14659  for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
14660  if ( 0 == nucset.count(i->first) )
14661  cm[i->first] = (i->second) * mass;
14662  };
14663 
14664  // Add set component
14665  for (std::set<int>::iterator nuc = nucset.begin(); nuc != nucset.end(); nuc++)
14666  cm[*nuc] = value;
14667 
14668  return pyne::Material(cm, -1, -1);
14669 };
14670 
14671 
14672 
14673 pyne::Material pyne::Material::set_mat(std::set<std::string> nucset, double value) {
14674  // Sets a substream from this stream based on a set of strings.
14675  // Strings can be of any form.
14676  std::set<int> iset;
14677  for (std::set<std::string>::iterator i = nucset.begin(); i != nucset.end(); i++) {
14678  iset.insert(pyne::nucname::id(*i));
14679  };
14680 
14681  return set_mat(iset, value);
14682 };
14683 
14684 
14685 
14686 
14688  // Removes a sub-material from this mat based on a set of integers.
14689  // Integers can either be of id form -OR- they can be a z-numer (is 8 for O, 93 for Np, etc).
14690  // n is the name of the new material.
14691 
14692  pyne::comp_map cm;
14693  for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
14694  // Only add to new comp if not in nucset
14695  if ( 0 == nucset.count(i->first) )
14696  cm[i->first] = (i->second) * mass;
14697  };
14698 
14699  return pyne::Material(cm, -1, -1);
14700 };
14701 
14702 
14703 
14704 pyne::Material pyne::Material::del_mat (std::set<std::string> nucset) {
14705  // Removes a substream from this stream based on a set of strings.
14706  // Strings can be of any form.
14707  std::set<int> iset;
14708  for (std::set<std::string>::iterator i = nucset.begin(); i != nucset.end(); i++) {
14709  iset.insert(pyne::nucname::id(*i));
14710  };
14711 
14712  return del_mat(iset);
14713 };
14714 
14715 
14716 
14717 
14718 
14719 
14721  // Grabs a sub-material from this mat based on a range of integers.
14722  if (upper < lower)
14723  {
14724  int temp_upper = upper;
14725  upper = lower;
14726  lower = temp_upper;
14727  };
14728 
14729  pyne::comp_map cm;
14730  for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
14731  if ((lower <= (i->first)) && ((i->first) < upper))
14732  cm[i->first] = (i->second) * mass;
14733  };
14734 
14735  return pyne::Material(cm, -1,-1);
14736 };
14737 
14738 
14739 
14740 pyne::Material pyne::Material::set_range(int lower, int upper, double value) {
14741 // Sets a sub-material from this mat based on a range of integers.
14742 if (upper < lower) {
14743 int temp_upper = upper;
14744 upper = lower;
14745 lower = temp_upper;
14746 };
14747 
14748 pyne::comp_map cm;
14749 for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
14750  if ((lower <= (i->first)) && ((i->first) < upper))
14751  cm[i->first] = value;
14752  else
14753  cm[i->first] = (i->second) * mass;
14754 };
14755 
14756  return pyne::Material(cm, -1,-1);
14757 };
14758 
14759 
14760 
14762  // Removes a sub-material from this mat based on a range of integers.
14763  if (upper < lower) {
14764  int temp_upper = upper;
14765  upper = lower;
14766  lower = temp_upper;
14767  };
14768 
14769  pyne::comp_map cm;
14770  for (pyne::comp_iter i = comp.begin(); i != comp.end(); i++) {
14771  if ((upper <= (i->first)) || ((i->first) < lower))
14772  cm[i->first] = (i->second) * mass;
14773  };
14774 
14775  return pyne::Material(cm, -1, -1);
14776 };
14777 
14778 
14779 
14780 
14781 
14782 
14783 
14784 
14785 
14786 
14788  // Returns a material of the element that is a submaterial of this one.
14789  return sub_range(elem, elem + 10000000);
14790 };
14791 
14792 
14793 
14795  // Returns a material of Lanthanides that is a sub-material of this one.
14796  return sub_range(570000000, 720000000);
14797 };
14798 
14799 
14800 
14802  //Returns a material of Actindes that is a sub-material of this one.
14803  return sub_range(890000000, 1040000000);
14804 };
14805 
14806 
14808  // Returns a material of Transuranics that is a sub-material of this one.
14809  return sub_range(930000000, INT_MAX);
14810 };
14811 
14812 
14813 
14815  // Returns a material of Minor Actinides that is a sub-material of this one.
14816  return sub_range(930000000, 1040000000).del_range(940000000, 950000000);
14817 };
14818 
14819 
14820 
14822  // Returns a material of Fission Products that is a sub-material of this one.
14823  return sub_range(0, 890000000);
14824 };
14825 
14826 
14827 
14828 
14829 /*--- Atom Frac Functions ---*/
14830 
14831 std::map<int, double> pyne::Material::to_atom_frac() {
14832  // Returns an atom fraction map from this material's composition
14833  // the material's molecular mass
14834  double mat_mw = molecular_mass();
14835 
14836  std::map<int, double> atom_fracs = std::map<int, double>();
14837 
14838  for (comp_iter ci = comp.begin(); ci != comp.end(); ci++)
14839  atom_fracs[ci->first] = (ci->second) * mat_mw / pyne::atomic_mass(ci->first);
14840 
14841  return atom_fracs;
14842 };
14843 
14844 
14845 void pyne::Material::from_atom_frac(std::map<int, double> atom_fracs) {
14846  // atom frac must be of the form {nuc: af}, eg, water
14847  // 80160: 1.0
14848  // 10010: 2.0
14849 
14850  // clear existing components
14851  comp.clear();
14852  atoms_per_molecule = 0.0;
14853 
14854  for (std::map<int, double>::iterator afi = atom_fracs.begin(); afi != atom_fracs.end(); afi++) {
14855  comp[afi->first] = (afi->second) * pyne::atomic_mass(afi->first);
14856  atoms_per_molecule += (afi->second);
14857  };
14858 
14859  norm_comp();
14860 };
14861 
14862 
14863 std::map<int, double> pyne::Material::to_atom_dens() {
14864  // Returns an atom density map from this material's composition
14865  // the material's density
14866 
14867  std::map<int, double> atom_dens = std::map<int, double>();
14868 
14869  for (comp_iter ci = comp.begin(); ci != comp.end(); ci++)
14870  atom_dens[ci->first] = (ci->second) * density * pyne::N_A / pyne::atomic_mass(ci->first);
14871 
14872  return atom_dens;
14873 };
14874 
14875 
14876 std::vector<std::pair<double, double> > pyne::Material::gammas() {
14877  std::vector<std::pair<double, double> > result;
14878  std::map<int, double> atom_fracs = this->to_atom_frac();
14879  int state_id;
14880  for (comp_iter ci = comp.begin(); ci != comp.end(); ci++) {
14881  if (ci->first % 10000 > 0)
14882  state_id = nucname::id_to_state_id(ci->first);
14883  else
14884  state_id = ci->first;
14885 
14886  std::vector<std::pair<double, double> > raw_gammas = pyne::gammas(state_id);
14887  for (int i = 0; i < raw_gammas.size(); ++i) {
14888  result.push_back(std::make_pair(raw_gammas[i].first,
14889  atom_fracs[ci->first]*raw_gammas[i].second));
14890  }
14891  }
14892  return result;
14893 }
14894 
14895 std::vector<std::pair<double, double> > pyne::Material::xrays() {
14896  std::vector<std::pair<double, double> > result;
14897  std::map<int, double> atom_fracs = this->to_atom_frac();
14898  int state_id;
14899  for (comp_iter ci = comp.begin(); ci != comp.end(); ci++) {
14900  if (ci->first % 10000 > 0)
14901  state_id = nucname::id_to_state_id(ci->first);
14902  else
14903  state_id = ci->first;
14904 
14905  std::vector<std::pair<double, double> > raw_xrays = pyne::xrays(state_id);
14906  for (int i = 0; i < raw_xrays.size(); ++i) {
14907  result.push_back(std::make_pair(raw_xrays[i].first,
14908  atom_fracs[ci->first]*raw_xrays[i].second));
14909  }
14910  }
14911  return result;
14912 }
14913 
14914 std::vector<std::pair<double, double> > pyne::Material::photons(bool norm) {
14915  std::vector<std::pair<double, double> > txray = this->xrays();
14916  std::vector<std::pair<double, double> > tgammas = this->gammas();
14917  for (int i = 0; i < txray.size(); ++i)
14918  tgammas.push_back(txray[i]);
14919  if (norm)
14920  tgammas = normalize_radioactivity(tgammas);
14921  return tgammas;
14922 }
14923 
14924 std::vector<std::pair<double, double> > pyne::Material::normalize_radioactivity(
14925 std::vector<std::pair<double, double> > unnormed) {
14926  std::vector<std::pair<double, double> > normed;
14927  double sum = 0.0;
14928  for (int i = 0; i < unnormed.size(); ++i) {
14929  if (!isnan(unnormed[i].second))
14930  sum = sum + unnormed[i].second;
14931  }
14932  for (int i = 0; i < unnormed.size(); ++i) {
14933  if (!isnan(unnormed[i].second)) {
14934  normed.push_back(std::make_pair(unnormed[i].first,
14935  (unnormed[i].second)/sum));
14936  }
14937  }
14938  return normed;
14939 }
14940 
14941 
14943  Material rtn;
14944  comp_map out = pyne::decayers::decay(to_atom_frac(), t);
14945  rtn.from_atom_frac(out);
14946  rtn.mass = mass * rtn.molecular_mass() / molecular_mass();
14947  return rtn;
14948 };
14949 
14950 
14952  // Overloads x + y
14953  return pyne::Material(comp, mass + y, density);
14954 };
14955 
14956 
14957 
14959  // Overloads x + y
14960  pyne::comp_map cm;
14961  pyne::comp_map xwgt = mult_by_mass();
14962  pyne::comp_map ywgt = y.mult_by_mass();
14963 
14964  for (pyne::comp_iter i = xwgt.begin(); i != xwgt.end(); i++) {
14965  if ( 0 < ywgt.count(i->first) )
14966  cm[i->first] = xwgt[i->first] + ywgt[i->first];
14967  else
14968  cm[i->first] = xwgt[i->first];
14969  };
14970 
14971  for (pyne::comp_iter i = ywgt.begin(); i != ywgt.end(); i++) {
14972  if ( 0 == cm.count(i->first) )
14973  cm[i->first] = ywgt[i->first];
14974  };
14975 
14976  return pyne::Material(cm, -1, -1);
14977 };
14978 
14979 
14980 
14982  // Overloads x * y
14983  return pyne::Material(comp, mass * y, density);
14984 };
14985 
14986 
14987 
14989  // Overloads x / y
14990  return pyne::Material(comp, mass / y, density );
14991 }
14992 //
14993 // end of src/material.cpp
14994 //
14995 
14996 
14997 //
14998 // start of src/enrichment_cascade.cpp
14999 //
15000 // Enrichment Cascade
15001 #ifndef PYNE_IS_AMALGAMATED
15002 #include "enrichment_cascade.h"
15003 #endif
15004 
15005 namespace pyne_enr = pyne::enrichment;
15006 
15007 /*********************************/
15008 /*** Enrichment Helper Classes ***/
15009 /*********************************/
15011  alpha = 0.0;
15012  Mstar = 0.0;
15013 
15014  j = 0;
15015  k = 0;
15016 
15017  N = 0.0;
15018  M = 0.0;
15019 
15020  x_feed_j = 0.0;
15021  x_prod_j = 0.0;
15022  x_tail_j = 0.0;
15023 
15024  mat_feed = pyne::Material();
15025  mat_prod = pyne::Material();
15026  mat_tail = pyne::Material();
15027 
15028  l_t_per_feed = 0.0;
15029  swu_per_feed = 0.0;
15030  swu_per_prod = 0.0;
15031 };
15032 
15033 
15035 };
15036 
15037 
15039  // resets the key enriment member variables
15040  x_feed_j = mat_feed.comp[j];
15041  x_prod_j = mat_prod.comp[j];
15042  x_tail_j = mat_tail.comp[j];
15043 };
15044 
15045 //
15046 // end of src/enrichment_cascade.cpp
15047 //
15048 
15049 
15050 //
15051 // start of src/enrichment.cpp
15052 //
15053 // Enrichment
15054 #ifndef PYNE_IS_AMALGAMATED
15055 #include "enrichment.h"
15056 #endif
15057 
15058 namespace pyne_enr = pyne::enrichment;
15059 
15061  // Default cascade for uranium-based enrichment
15062  Cascade duc;
15063 
15064  duc.alpha = 1.05;
15065  duc.Mstar = 236.5;
15066 
15067  duc.j = 922350000;
15068  duc.k = 922380000;
15069 
15070  duc.N = 30.0;
15071  duc.M = 10.0;
15072 
15073  duc.x_feed_j = 0.0072;
15074  duc.x_prod_j = 0.05;
15075  duc.x_tail_j = 0.0025;
15076 
15077  pyne::comp_map cm;
15078  cm[922340000] = 0.000055;
15079  cm[922350000] = 0.00720;
15080  cm[922380000] = 0.992745;
15081  duc.mat_feed = pyne::Material(cm, 1.0, 1.0);
15082 
15083  return duc;
15084 };
15086 
15087 
15088 
15089 double pyne_enr::feed_per_prod(double x_feed, double x_prod, double x_tail) {
15090  return 1 / prod_per_feed(x_feed, x_prod, x_tail);
15091 }
15092 
15093 double pyne_enr::feed_per_tail(double x_feed, double x_prod, double x_tail) {
15094  return 1 / tail_per_feed(x_feed, x_prod, x_tail);
15095 }
15096 
15097 double pyne_enr::prod_per_tail(double x_feed, double x_prod, double x_tail) {
15098  return 1 / tail_per_prod(x_feed, x_prod, x_tail);
15099 }
15100 
15101 double pyne_enr::prod_per_feed(double x_feed, double x_prod, double x_tail) {
15102  return (x_feed - x_tail) / (x_prod - x_tail);
15103 }
15104 
15105 double pyne_enr::tail_per_feed(double x_feed, double x_prod, double x_tail) {
15106  return (x_feed - x_prod) / (x_tail - x_prod);
15107 }
15108 
15109 double pyne_enr::tail_per_prod(double x_feed, double x_prod, double x_tail) {
15110  return (x_feed - x_prod) / (x_tail - x_feed);
15111 }
15112 
15113 double pyne_enr::value_func(double x) {
15114  return (2 * x - 1) * log(x / (1 - x));
15115 }
15116 
15117 double pyne_enr::swu_per_feed(double x_feed, double x_prod, double x_tail) {
15118  return
15119  prod_per_feed(x_feed, x_prod, x_tail) * value_func(x_prod) + \
15120  tail_per_feed(x_feed, x_prod, x_tail) * value_func(x_tail) - \
15121  value_func(x_feed);
15122 }
15123 
15124 double pyne_enr::swu_per_prod(double x_feed, double x_prod, double x_tail) {
15125  return
15126  value_func(x_prod) + \
15127  tail_per_prod(x_feed, x_prod, x_tail) * value_func(x_tail) - \
15128  feed_per_prod(x_feed, x_prod, x_tail) * value_func(x_feed);
15129 }
15130 
15131 double pyne_enr::swu_per_tail(double x_feed, double x_prod, double x_tail) {
15132  return
15133  prod_per_tail(x_feed, x_prod, x_tail) * value_func(x_prod) + \
15134  value_func(x_tail) - \
15135  feed_per_tail(x_feed, x_prod, x_tail) * value_func(x_feed);
15136 }
15137 
15138 
15139 double pyne_enr::alphastar_i(double alpha, double Mstar, double M_i) {
15140  // M_i is the mass of the ith nuclide
15141  return pow(alpha, (Mstar - M_i));
15142 }
15143 
15144 
15145 void pyne_enr::_recompute_nm(pyne_enr::Cascade & casc, double tolerance) {
15146 
15147  double ppf = prod_per_feed(casc.mat_feed.comp[casc.j], casc.x_prod_j, casc.x_tail_j);
15148  double tpf = tail_per_feed(casc.mat_feed.comp[casc.j], casc.x_prod_j, casc.x_tail_j);
15149  double astar_j = alphastar_i(casc.alpha, casc.Mstar, pyne::atomic_mass(casc.j));
15150 
15151  // Save original state of N & M
15152  double N = casc.N;
15153  double M = casc.M;
15154  double origN = casc.N;
15155  double origM = casc.M;
15156 
15157  double lhs_prod = ppf * casc.x_prod_j / casc.mat_feed.comp[casc.j];
15158  double rhs_prod = (pow(astar_j, M+1.0) - 1.0) / (pow(astar_j, M+1.0) - pow(astar_j, -N));
15159  double lhs_tail = tpf * casc.x_tail_j / casc.mat_feed.comp[casc.j];
15160  double rhs_tail = (1.0 - pow(astar_j, -N)) / (pow(astar_j, M+1.0) - pow(astar_j, -N));
15161 
15162  double n = 1.0;
15163  double delta_prod = lhs_prod - rhs_prod;
15164  double delta_tail = lhs_tail - rhs_tail;
15165  while (tolerance < fabs(delta_prod) && tolerance < fabs(delta_tail)) {
15166  delta_prod = lhs_prod - rhs_prod;
15167  delta_tail = lhs_tail - rhs_tail;
15168 
15169  if (tolerance < fabs(delta_prod)) {
15170  N = N - (delta_prod * N);
15171  rhs_prod = (pow(astar_j, M+1.0) - 1.0) / (pow(astar_j, M+1.0) - pow(astar_j, -N));
15172  };
15173 
15174  if (tolerance < fabs(delta_tail)) {
15175  M = M - (delta_tail * M);
15176  rhs_tail = (1.0 - pow(astar_j, -N)) / (pow(astar_j, M+1.0) - pow(astar_j, -N));
15177  };
15178 
15179  if (N < tolerance) {
15180  N = origN + n;
15181  M = origM + n;
15182  n = n + 1.0;
15183  };
15184 
15185  if (M < tolerance) {
15186  N = origN + n;
15187  M = origM + n;
15188  n = n + 1.0;
15189  };
15190  };
15191 
15192  casc.N = N;
15193  casc.M = M;
15194  return;
15195 };
15196 
15197 
15198 
15200  //This function takes a given initial guess number of enriching and stripping stages
15201  //for a given composition of fuel with a given jth key component, knowing the values
15202  //that are desired in both Product and Tails streams. Having this it solves for what
15203  //the actual N and M stage numbers are and also what the product and waste streams
15204  //compositions are. It returns precisely these.
15205  pyne::comp_map comp_prod;
15206  pyne::comp_map comp_tail;
15207 
15208  int nuc;
15209  double astar_i, numer_prod, numer_tail, denom_prod, denom_tail;
15210 
15211  double N = casc.N;
15212  double M = casc.M;
15213 
15214  double ppf = prod_per_feed(casc.mat_feed.comp[casc.j], casc.x_prod_j, casc.x_tail_j);
15215  double tpf = tail_per_feed(casc.mat_feed.comp[casc.j], casc.x_prod_j, casc.x_tail_j);
15216 
15217  for (pyne::comp_iter i = casc.mat_feed.comp.begin(); i != casc.mat_feed.comp.end(); i++) {
15218  nuc = (i->first);
15219  astar_i = alphastar_i(casc.alpha, casc.Mstar, pyne::atomic_mass(nuc));
15220 
15221  // calc prod comp
15222  numer_prod = casc.mat_feed.comp[nuc] * (pow(astar_i, M+1.0) - 1.0);
15223  denom_prod = (pow(astar_i, M+1.0) - pow(astar_i, -N)) / ppf;
15224  comp_prod[nuc] = numer_prod / denom_prod;
15225 
15226  // calc tail comp
15227  numer_tail = casc.mat_feed.comp[nuc] * (1.0 - pow(astar_i, -N));
15228  denom_tail = (pow(astar_i, M+1.0) - pow(astar_i, -N)) / tpf;
15229  comp_tail[nuc] = numer_tail / denom_tail;
15230  };
15231 
15232  casc.mat_prod = pyne::Material(comp_prod);
15233  casc.mat_tail = pyne::Material(comp_tail);
15234  return;
15235 };
15236 
15237 
15238 
15240  double tolerance, int max_iter) {
15241  // This function actually solves the whole system of equations. It uses _recompute_prod_tail_mats
15242  // to find the roots for the enriching and stripping stage numbers. It then
15243  // checks to see if the product and waste streams meet their target enrichments
15244  // for the jth component like they should. If they don't then it trys other values
15245  // of N and M varied by the Secant ethod. Rinse and repeat as needed.
15246  int j = casc.j;
15247  pyne_enr::Cascade prev_casc = casc;
15248  pyne_enr::Cascade curr_casc = casc;
15249 
15250  // Is the history of N and M that has been input
15251  unsigned int h;
15252  int niter = 0;
15253  int max_hist = max_iter / 10;
15254  std::vector<double> historyN;
15255  std::vector<double> historyM;
15256 
15257  // Initialize prev point
15258  prev_casc.N += 1.0;
15259  prev_casc.M += 1.0;
15260  _recompute_nm(prev_casc, tolerance);
15261  _recompute_prod_tail_mats(prev_casc);
15262  historyN.push_back(prev_casc.N);
15263  historyM.push_back(prev_casc.M);
15264 
15265 
15266  // Initialize current point
15267  _recompute_nm(curr_casc, tolerance);
15268  _recompute_prod_tail_mats(curr_casc);
15269  historyN.push_back(curr_casc.N);
15270  historyM.push_back(curr_casc.M);
15271 
15272  // My guess is that what we are checkin here is that the isotopic compositions
15273  // make sense with abs(1.0 - masscurr_P) rather than calculatign the
15274  // relative product to watse mass streams.
15275  double prev_N = prev_casc.N;
15276  double prev_M = prev_casc.M;
15277  double curr_N = curr_casc.N;
15278  double curr_M = curr_casc.M;
15279  double temp_prev_N = 0.0;
15280  double temp_prev_M = 0.0;
15281  double temp_curr_N = 0.0;
15282  double temp_curr_M = 0.0;
15283 
15284  double delta_x_prod_j = casc.x_prod_j - curr_casc.mat_prod.comp[j];
15285  double delta_x_tail_j = casc.x_tail_j - curr_casc.mat_tail.comp[j];
15286 
15287  while ((tolerance < fabs(delta_x_prod_j) / curr_casc.mat_prod.comp[j] || \
15288  tolerance < fabs(delta_x_tail_j) / curr_casc.mat_tail.comp[j]) && \
15289  niter < max_iter) {
15290  delta_x_prod_j = casc.x_prod_j - curr_casc.mat_prod.comp[j];
15291  delta_x_tail_j = casc.x_tail_j - curr_casc.mat_tail.comp[j];
15292 
15293  if (tolerance <= fabs(delta_x_prod_j)/curr_casc.mat_prod.comp[j]) {
15294  // Make a new guess for N
15295  temp_curr_N = curr_N;
15296  temp_prev_N = prev_N;
15297  curr_N = curr_N + delta_x_prod_j*\
15298  ((curr_N - prev_N)/(curr_casc.mat_prod.comp[j] - prev_casc.mat_prod.comp[j]));
15299  prev_N = temp_curr_N;
15300 
15301  // If the new value of N is less than zero, reset.
15302  if (curr_N < 0.0)
15303  curr_N = (temp_curr_N + temp_prev_N)/2.0;
15304  };
15305 
15306  if (tolerance <= fabs(delta_x_tail_j)/curr_casc.mat_tail.comp[j]) {
15307  // Make a new guess for M
15308  temp_curr_M = curr_M;
15309  temp_prev_M = prev_M;
15310  curr_M = curr_M + delta_x_tail_j*\
15311  ((curr_M - prev_M)/(curr_casc.mat_tail.comp[j] - prev_casc.mat_tail.comp[j]));
15312  prev_M = temp_curr_M;
15313 
15314  // If the new value of M is less than zero, reset.
15315  if (curr_M < 0.0)
15316  curr_M = (temp_curr_M + temp_prev_M)/2.0;
15317  };
15318 
15319  // Check for infinite loops
15320  for (h = 0; h < historyN.size(); h++) {
15321  if (historyN[h] == curr_N && historyM[h] == curr_M) {
15322  curr_N = curr_N + delta_x_prod_j * \
15323  ((curr_N - prev_N)/(curr_casc.mat_prod.comp[j] - prev_casc.mat_prod.comp[j]));
15324  curr_M = curr_M + delta_x_tail_j * \
15325  ((curr_M - prev_M)/(curr_casc.mat_tail.comp[j] - prev_casc.mat_tail.comp[j]));;
15326  break;
15327  };
15328  };
15329 
15330  if (max_hist <= historyN.size()) {
15331  historyN.erase(historyN.begin());
15332  historyM.erase(historyM.begin());
15333  };
15334  historyN.push_back(curr_N);
15335  historyM.push_back(curr_M);
15336 
15337  niter += 1;
15338 
15339  // Calculate new isotopics for valid (N, M)
15340  prev_casc = curr_casc;
15341  curr_casc.N = curr_N;
15342  curr_casc.M = curr_M;
15343  _recompute_nm(curr_casc, tolerance);
15344  _recompute_prod_tail_mats(curr_casc);
15345  };
15346  return curr_casc;
15347 };
15348 
15349 
15350 
15352  // Solves for a stage separative power relevant to the ith component
15353  // per unit of flow G. This is taken from Equation 31 divided by G
15354  // from the paper "Wood, Houston G., Borisevich, V. D. and Sulaberidze, G. A.,
15355  // 'On a Criterion Efficiency for Multi-Isotope Mixtures Separation',
15356  // Separation Science and Technology, 34:3, 343 - 357"
15357  // To link to this article: DOI: 10.1081/SS-100100654
15358  // URL: http://dx.doi.org/10.1081/SS-100100654
15359 
15360  double astar_i = alphastar_i(casc.alpha, casc.Mstar, pyne::atomic_mass(i));
15361  return log(pow(casc.alpha, (casc.Mstar - pyne::atomic_mass(casc.j)) )) * \
15362  ((astar_i - 1.0)/(astar_i + 1.0));
15363 };
15364 
15365 
15367  double tolerance, int max_iter) {
15368  // This function finds the total flow rate (L) over the feed flow rate (F)
15369  pyne_enr::Cascade casc = orig_casc;
15370 
15371  casc = _norm_comp_secant(casc, tolerance, max_iter);
15372 
15373  int nuc;
15374  int j = casc.j;
15375  int k = casc.k;
15376  double ppf = prod_per_feed(casc.mat_feed.comp[j], casc.x_prod_j, casc.x_tail_j);
15377  double tpf = tail_per_feed(casc.mat_feed.comp[j], casc.x_prod_j, casc.x_tail_j);
15378 
15379  // Matched Flow Ratios
15380  double rfeed = casc.mat_feed.comp[j] / casc.mat_feed.comp[k];
15381  double rprod = casc.mat_prod.comp[j] / casc.mat_prod.comp[k];
15382  double rtail = casc.mat_tail.comp[j] / casc.mat_tail.comp[k];
15383 
15384  double ltotpf = 0.0;
15385  double swupf = 0.0;
15386  double temp_numer = 0.0;
15387 
15388  for (pyne::comp_iter i = casc.mat_feed.comp.begin(); i != casc.mat_feed.comp.end(); i++) {
15389  nuc = (i->first);
15390  temp_numer = (ppf*casc.mat_prod.comp[nuc]*log(rprod) + \
15391  tpf*casc.mat_tail.comp[nuc]*log(rtail) - \
15392  casc.mat_feed.comp[nuc]*log(rfeed));
15393  ltotpf = ltotpf + (temp_numer / _deltaU_i_OverG(casc, nuc));
15394  swupf = swupf + temp_numer;
15395  };
15396 
15397  // Assign flow rates
15398  casc.l_t_per_feed = ltotpf;
15399 
15400  // The -1 term is put in the SWU calculation because otherwise swupf
15401  // represents the SWU that would be undone if you were to deenrich the
15402  // whole process. Thus the SWU to enrich is -1x this number. This is
15403  // a by-product of the value function used as a constraint.
15404  casc.swu_per_feed = -1 * swupf; // This is the SWU for 1 kg of Feed material.
15405  casc.swu_per_prod = -1 * swupf / ppf; // This is the SWU for 1 kg of Product material.
15406 
15407  // Assign isotopic streams the proper masses.
15408  casc.mat_prod.mass = casc.mat_feed.mass * ppf;
15409  casc.mat_tail.mass = casc.mat_feed.mass * tpf;
15410  return casc;
15411 };
15412 
15414  char * solver, double tolerance, int max_iter) {
15415  std::string strsolver(solver);
15416  return multicomponent(orig_casc, strsolver, tolerance, max_iter);
15417 };
15418 
15420  std::string solver, double tolerance, int max_iter) {
15421  // The multicomponent() function finds a value of Mstar by minimzing the seperative power.
15422  // Note that Mstar0 represents an intial guess at what Mstar might be.
15423  // This is the final function that actually solves for an optimized M* that makes the cascade!
15424  pyne_enr::Cascade temp_casc;
15425  pyne_enr::Cascade prev_casc = orig_casc;
15426  pyne_enr::Cascade curr_casc = orig_casc;
15427 
15428  // define the solver to use
15429  int solver_code;
15430  if (solver == "symbolic")
15431  solver_code = 0;
15432  else if (solver == "numeric")
15433  solver_code = 1;
15434  else
15435  throw "solver not known: " + solver;
15436 
15437  // validate Mstar or pick new value
15438  if ((orig_casc.Mstar < pyne::atomic_mass(orig_casc.j) && \
15439  orig_casc.Mstar < pyne::atomic_mass(orig_casc.k)) || \
15440  (orig_casc.Mstar > pyne::atomic_mass(orig_casc.j) && \
15441  orig_casc.Mstar > pyne::atomic_mass(orig_casc.k))) {
15442  double ms = (pyne::atomic_mass(orig_casc.j) + pyne::atomic_mass(orig_casc.k)) / 2.0;
15443  prev_casc.Mstar = ms;
15444  curr_casc.Mstar = ms;
15445  };
15446 
15447  // xpn is the exponential index
15448  double ooe = -log10(tolerance);
15449  double xpn = 1.0;
15450 
15451  // Initialize previous point
15452  switch (solver_code) {
15453  case 0:
15454  prev_casc = solve_symbolic(prev_casc);
15455  break;
15456  case 1:
15457  prev_casc = solve_numeric(prev_casc, tolerance, max_iter);
15458  break;
15459  };
15460 
15461  // Initialize curr_ent point
15462  curr_casc.Mstar = (pyne::atomic_mass(curr_casc.j) + curr_casc.Mstar) / 2.0;
15463  switch (solver_code) {
15464  case 0:
15465  curr_casc = solve_symbolic(curr_casc);
15466  break;
15467  case 1:
15468  curr_casc = solve_numeric(curr_casc, tolerance, max_iter);
15469  break;
15470  };
15471 
15472  double m = pyne::slope(curr_casc.Mstar, curr_casc.l_t_per_feed, \
15473  prev_casc.Mstar, prev_casc.l_t_per_feed);
15474  double m_sign = m / fabs(m);
15475 
15476  double temp_m;
15477  double temp_m_sign;
15478 
15479  while (tolerance < fabs(curr_casc.l_t_per_feed - prev_casc.l_t_per_feed) / curr_casc.l_t_per_feed) {
15480  // Check that parameters are still well-formed
15481  if (isnan(curr_casc.Mstar) || isnan(curr_casc.l_t_per_feed) || \
15482  isnan(prev_casc.Mstar) || isnan(prev_casc.l_t_per_feed))
15483  throw EnrichmentIterationNaN();
15484 
15485  prev_casc = curr_casc;
15486 
15487  curr_casc.Mstar = curr_casc.Mstar - (m_sign * pow(10.0, -xpn));
15488  switch (solver_code) {
15489  case 0:
15490  curr_casc = solve_symbolic(curr_casc);
15491  break;
15492  case 1:
15493  curr_casc = solve_numeric(curr_casc, tolerance, max_iter);
15494  break;
15495  };
15496 
15497  if (prev_casc.l_t_per_feed < curr_casc.l_t_per_feed) {
15498  temp_casc = curr_casc;
15499  temp_casc.Mstar = temp_casc.Mstar - (m_sign * pow(10.0, -xpn));
15500  switch (solver_code) {
15501  case 0:
15502  temp_casc = solve_symbolic(temp_casc);
15503  break;
15504  case 1:
15505  temp_casc = solve_numeric(temp_casc, tolerance, max_iter);
15506  break;
15507  };
15508 
15509  temp_m = pyne::slope(curr_casc.Mstar, curr_casc.l_t_per_feed, \
15510  temp_casc.Mstar, temp_casc.l_t_per_feed);
15511  if (temp_m == 0.0) {
15512  prev_casc = curr_casc;
15513  curr_casc = temp_casc;
15514  break;
15515  };
15516 
15517  temp_m_sign = temp_m / fabs(temp_m);
15518  if (m_sign != temp_m_sign) {
15519  xpn = xpn + 1;
15520 
15521  temp_casc = prev_casc;
15522  temp_casc.Mstar = temp_casc.Mstar + (m_sign * pow(10.0, -xpn));
15523  switch (solver_code) {
15524  case 0:
15525  temp_casc = solve_symbolic(temp_casc);
15526  break;
15527  case 1:
15528  temp_casc = solve_numeric(temp_casc, tolerance, max_iter);
15529  break;
15530  };
15531  temp_m = pyne::slope(prev_casc.Mstar, prev_casc.l_t_per_feed, \
15532  temp_casc.Mstar, temp_casc.l_t_per_feed);
15533 
15534  if (temp_m == 0.0) {
15535  prev_casc = curr_casc;
15536  curr_casc = temp_casc;
15537  break;
15538  };
15539 
15540  m_sign = temp_m / fabs(temp_m);
15541  m = temp_m;
15542  prev_casc = curr_casc;
15543  curr_casc = temp_casc;
15544  };
15545  };
15546  };
15547 
15548  return curr_casc;
15549 };
15550 //
15551 // end of src/enrichment.cpp
15552 //
15553 
15554 
15555 //
15556 // start of src/enrichment_symbolic20.cpp
15557 //
15558 
15559 /*********************************************************/
15560 /*** Symbolic Enrichment Functions ***/
15561 /*** WARNING: This file is auto-generated. ***/
15562 /*** DO NOT MODIFY!!! ***/
15563 /*********************************************************/
15564 #ifndef PYNE_IS_AMALGAMATED
15565 #include "enrichment_symbolic.h"
15566 #endif
15567 
15569 {
15570  pyne::enrichment::Cascade casc = orig_casc;
15571  int j = casc.j;
15572  int k = casc.k;
15573  double alpha = casc.alpha;
15574  double NP0 = casc.N;
15575  //double NT0 = casc.M;
15576  double Mstar = casc.Mstar;
15577  double xPj = casc.x_prod_j;
15578  //double xFj = casc.x_feed_j;
15579  double xTj = casc.x_tail_j;
15580  int ncomp = casc.mat_feed.comp.size();
15581  double LpF = -1.0, PpF = -1.0, TpF = -1.0,
15582  SWUpF = -1.0, SWUpP = -1.0,
15583  NP_b = -1.0, NP_sqrt_base = -1.0, NP_2a = -1.0,
15584  NP1 = -1.0, NT1 = -1.0;
15585  double * MW = new double [ncomp];
15586  double * xP = new double [ncomp];
15587  double * xF = new double [ncomp];
15588  double * xT = new double [ncomp];
15589  double n538 = 0.0,
15590  n539 = 0.0,
15591  n536 = 0.0,
15592  n537 = 0.0,
15593  n534 = 0.0,
15594  n535 = 0.0,
15595  n532 = 0.0,
15596  n533 = 0.0,
15597  n530 = 0.0,
15598  n531 = 0.0,
15599  n408 = 0.0,
15600  n409 = 0.0,
15601  n402 = 0.0,
15602  n403 = 0.0,
15603  n400 = 0.0,
15604  n401 = 0.0,
15605  n406 = 0.0,
15606  n407 = 0.0,
15607  n404 = 0.0,
15608  n405 = 0.0,
15609  n392 = 0.0,
15610  n393 = 0.0,
15611  n390 = 0.0,
15612  n391 = 0.0,
15613  n396 = 0.0,
15614  n397 = 0.0,
15615  n394 = 0.0,
15616  n395 = 0.0,
15617  n398 = 0.0,
15618  n399 = 0.0,
15619  n240 = 0.0,
15620  n241 = 0.0,
15621  n242 = 0.0,
15622  n243 = 0.0,
15623  n244 = 0.0,
15624  n245 = 0.0,
15625  n246 = 0.0,
15626  n247 = 0.0,
15627  n248 = 0.0,
15628  n249 = 0.0,
15629  n499 = 0.0,
15630  n498 = 0.0,
15631  n329 = 0.0,
15632  n328 = 0.0,
15633  n327 = 0.0,
15634  n326 = 0.0,
15635  n325 = 0.0,
15636  n324 = 0.0,
15637  n323 = 0.0,
15638  n322 = 0.0,
15639  n321 = 0.0,
15640  n320 = 0.0,
15641  n149 = 0.0,
15642  n148 = 0.0,
15643  n143 = 0.0,
15644  n142 = 0.0,
15645  n141 = 0.0,
15646  n140 = 0.0,
15647  n147 = 0.0,
15648  n146 = 0.0,
15649  n145 = 0.0,
15650  n144 = 0.0,
15651  n74 = 0.0,
15652  n75 = 0.0,
15653  n76 = 0.0,
15654  n77 = 0.0,
15655  n70 = 0.0,
15656  n71 = 0.0,
15657  n72 = 0.0,
15658  n73 = 0.0,
15659  n78 = 0.0,
15660  n79 = 0.0,
15661  n615 = 0.0,
15662  g128 = 0.0,
15663  g129 = 0.0,
15664  g126 = 0.0,
15665  g127 = 0.0,
15666  g124 = 0.0,
15667  g125 = 0.0,
15668  g122 = 0.0,
15669  g123 = 0.0,
15670  g120 = 0.0,
15671  g121 = 0.0,
15672  g221 = 0.0,
15673  g220 = 0.0,
15674  g223 = 0.0,
15675  g222 = 0.0,
15676  g225 = 0.0,
15677  g224 = 0.0,
15678  g227 = 0.0,
15679  g226 = 0.0,
15680  g229 = 0.0,
15681  g228 = 0.0,
15682  g254 = 0.0,
15683  g255 = 0.0,
15684  g256 = 0.0,
15685  g257 = 0.0,
15686  g319 = 0.0,
15687  g251 = 0.0,
15688  g252 = 0.0,
15689  g253 = 0.0,
15690  g315 = 0.0,
15691  g314 = 0.0,
15692  g317 = 0.0,
15693  g316 = 0.0,
15694  g258 = 0.0,
15695  g259 = 0.0,
15696  g313 = 0.0,
15697  g312 = 0.0,
15698  g19 = 0.0,
15699  g18 = 0.0,
15700  g17 = 0.0,
15701  g16 = 0.0,
15702  g15 = 0.0,
15703  g14 = 0.0,
15704  g13 = 0.0,
15705  g12 = 0.0,
15706  g11 = 0.0,
15707  g10 = 0.0,
15708  n529 = 0.0,
15709  n528 = 0.0,
15710  n521 = 0.0,
15711  n520 = 0.0,
15712  n523 = 0.0,
15713  n522 = 0.0,
15714  n525 = 0.0,
15715  n524 = 0.0,
15716  n527 = 0.0,
15717  n526 = 0.0,
15718  n415 = 0.0,
15719  n414 = 0.0,
15720  n417 = 0.0,
15721  n416 = 0.0,
15722  n411 = 0.0,
15723  n410 = 0.0,
15724  n413 = 0.0,
15725  n412 = 0.0,
15726  n419 = 0.0,
15727  n418 = 0.0,
15728  n558 = 0.0,
15729  n559 = 0.0,
15730  n554 = 0.0,
15731  n555 = 0.0,
15732  n556 = 0.0,
15733  n557 = 0.0,
15734  n550 = 0.0,
15735  n551 = 0.0,
15736  n552 = 0.0,
15737  n553 = 0.0,
15738  n389 = 0.0,
15739  n388 = 0.0,
15740  n385 = 0.0,
15741  n384 = 0.0,
15742  n387 = 0.0,
15743  n386 = 0.0,
15744  n381 = 0.0,
15745  n380 = 0.0,
15746  n383 = 0.0,
15747  n382 = 0.0,
15748  n253 = 0.0,
15749  n252 = 0.0,
15750  n251 = 0.0,
15751  n250 = 0.0,
15752  n257 = 0.0,
15753  n256 = 0.0,
15754  n255 = 0.0,
15755  n254 = 0.0,
15756  n259 = 0.0,
15757  n258 = 0.0,
15758  n318 = 0.0,
15759  n319 = 0.0,
15760  n312 = 0.0,
15761  n313 = 0.0,
15762  n310 = 0.0,
15763  n311 = 0.0,
15764  n316 = 0.0,
15765  n317 = 0.0,
15766  n314 = 0.0,
15767  n315 = 0.0,
15768  n176 = 0.0,
15769  n177 = 0.0,
15770  n174 = 0.0,
15771  n175 = 0.0,
15772  n172 = 0.0,
15773  n173 = 0.0,
15774  n170 = 0.0,
15775  n171 = 0.0,
15776  n178 = 0.0,
15777  n179 = 0.0,
15778  n49 = 0.0,
15779  n48 = 0.0,
15780  n41 = 0.0,
15781  n40 = 0.0,
15782  n43 = 0.0,
15783  n42 = 0.0,
15784  n45 = 0.0,
15785  n44 = 0.0,
15786  n47 = 0.0,
15787  n46 = 0.0,
15788  g139 = 0.0,
15789  g138 = 0.0,
15790  g131 = 0.0,
15791  g130 = 0.0,
15792  g133 = 0.0,
15793  g132 = 0.0,
15794  g135 = 0.0,
15795  g134 = 0.0,
15796  g137 = 0.0,
15797  g136 = 0.0,
15798  n294 = 0.0,
15799  g97 = 0.0,
15800  g96 = 0.0,
15801  g95 = 0.0,
15802  g94 = 0.0,
15803  g93 = 0.0,
15804  g92 = 0.0,
15805  g91 = 0.0,
15806  g90 = 0.0,
15807  g144 = 0.0,
15808  g145 = 0.0,
15809  g146 = 0.0,
15810  g147 = 0.0,
15811  g140 = 0.0,
15812  g141 = 0.0,
15813  g99 = 0.0,
15814  g98 = 0.0,
15815  g247 = 0.0,
15816  g246 = 0.0,
15817  g245 = 0.0,
15818  g244 = 0.0,
15819  g243 = 0.0,
15820  g242 = 0.0,
15821  g241 = 0.0,
15822  g240 = 0.0,
15823  g360 = 0.0,
15824  g249 = 0.0,
15825  g248 = 0.0,
15826  n495 = 0.0,
15827  n494 = 0.0,
15828  n497 = 0.0,
15829  n496 = 0.0,
15830  n491 = 0.0,
15831  n490 = 0.0,
15832  n493 = 0.0,
15833  n492 = 0.0,
15834  g159 = 0.0,
15835  g83 = 0.0,
15836  g88 = 0.0,
15837  g89 = 0.0,
15838  n460 = 0.0,
15839  n461 = 0.0,
15840  n462 = 0.0,
15841  n463 = 0.0,
15842  n464 = 0.0,
15843  n465 = 0.0,
15844  n466 = 0.0,
15845  n467 = 0.0,
15846  n468 = 0.0,
15847  n469 = 0.0,
15848  n549 = 0.0,
15849  n548 = 0.0,
15850  n547 = 0.0,
15851  n546 = 0.0,
15852  n545 = 0.0,
15853  n544 = 0.0,
15854  n543 = 0.0,
15855  n542 = 0.0,
15856  n541 = 0.0,
15857  n540 = 0.0,
15858  n341 = 0.0,
15859  n340 = 0.0,
15860  n343 = 0.0,
15861  n342 = 0.0,
15862  n345 = 0.0,
15863  n344 = 0.0,
15864  n347 = 0.0,
15865  n346 = 0.0,
15866  n305 = 0.0,
15867  n304 = 0.0,
15868  n307 = 0.0,
15869  n306 = 0.0,
15870  n301 = 0.0,
15871  n300 = 0.0,
15872  n268 = 0.0,
15873  n269 = 0.0,
15874  n266 = 0.0,
15875  n267 = 0.0,
15876  n264 = 0.0,
15877  n265 = 0.0,
15878  n309 = 0.0,
15879  n263 = 0.0,
15880  n260 = 0.0,
15881  n261 = 0.0,
15882  n284 = 0.0,
15883  n285 = 0.0,
15884  n286 = 0.0,
15885  n287 = 0.0,
15886  n280 = 0.0,
15887  n281 = 0.0,
15888  n282 = 0.0,
15889  n283 = 0.0,
15890  n288 = 0.0,
15891  n289 = 0.0,
15892  n161 = 0.0,
15893  n160 = 0.0,
15894  n163 = 0.0,
15895  n162 = 0.0,
15896  n165 = 0.0,
15897  n164 = 0.0,
15898  n167 = 0.0,
15899  n166 = 0.0,
15900  n169 = 0.0,
15901  n168 = 0.0,
15902  n608 = 0.0,
15903  n609 = 0.0,
15904  n600 = 0.0,
15905  n601 = 0.0,
15906  n602 = 0.0,
15907  n603 = 0.0,
15908  n604 = 0.0,
15909  n605 = 0.0,
15910  n606 = 0.0,
15911  n515 = 0.0,
15912  n58 = 0.0,
15913  n59 = 0.0,
15914  n56 = 0.0,
15915  n57 = 0.0,
15916  n54 = 0.0,
15917  n55 = 0.0,
15918  n52 = 0.0,
15919  n53 = 0.0,
15920  n50 = 0.0,
15921  n51 = 0.0,
15922  n518 = 0.0,
15923  n519 = 0.0,
15924  n114 = 0.0,
15925  n115 = 0.0,
15926  n116 = 0.0,
15927  n117 = 0.0,
15928  n110 = 0.0,
15929  n111 = 0.0,
15930  n112 = 0.0,
15931  n113 = 0.0,
15932  n118 = 0.0,
15933  n119 = 0.0,
15934  n29 = 0.0,
15935  n28 = 0.0,
15936  n23 = 0.0,
15937  n22 = 0.0,
15938  n21 = 0.0,
15939  n20 = 0.0,
15940  n27 = 0.0,
15941  n26 = 0.0,
15942  n25 = 0.0,
15943  n24 = 0.0,
15944  g84 = 0.0,
15945  g85 = 0.0,
15946  g86 = 0.0,
15947  g87 = 0.0,
15948  g80 = 0.0,
15949  g81 = 0.0,
15950  g82 = 0.0,
15951  g158 = 0.0,
15952  g157 = 0.0,
15953  g156 = 0.0,
15954  g155 = 0.0,
15955  g154 = 0.0,
15956  g153 = 0.0,
15957  g152 = 0.0,
15958  g151 = 0.0,
15959  g150 = 0.0,
15960  g272 = 0.0,
15961  g273 = 0.0,
15962  g270 = 0.0,
15963  g271 = 0.0,
15964  g276 = 0.0,
15965  g277 = 0.0,
15966  g274 = 0.0,
15967  g275 = 0.0,
15968  g278 = 0.0,
15969  g279 = 0.0,
15970  g31 = 0.0,
15971  g30 = 0.0,
15972  g33 = 0.0,
15973  g32 = 0.0,
15974  g35 = 0.0,
15975  g34 = 0.0,
15976  g37 = 0.0,
15977  g36 = 0.0,
15978  g39 = 0.0,
15979  g38 = 0.0,
15980  n486 = 0.0,
15981  n487 = 0.0,
15982  n488 = 0.0,
15983  n489 = 0.0,
15984  g148 = 0.0,
15985  g149 = 0.0,
15986  n473 = 0.0,
15987  n472 = 0.0,
15988  n471 = 0.0,
15989  n470 = 0.0,
15990  n477 = 0.0,
15991  n476 = 0.0,
15992  n475 = 0.0,
15993  n474 = 0.0,
15994  n479 = 0.0,
15995  n478 = 0.0,
15996  n578 = 0.0,
15997  n579 = 0.0,
15998  n572 = 0.0,
15999  n573 = 0.0,
16000  n570 = 0.0,
16001  n571 = 0.0,
16002  n576 = 0.0,
16003  n577 = 0.0,
16004  n574 = 0.0,
16005  n575 = 0.0,
16006  g142 = 0.0,
16007  g143 = 0.0,
16008  n370 = 0.0,
16009  n371 = 0.0,
16010  n372 = 0.0,
16011  n373 = 0.0,
16012  n374 = 0.0,
16013  n375 = 0.0,
16014  n376 = 0.0,
16015  n377 = 0.0,
16016  n378 = 0.0,
16017  n379 = 0.0,
16018  n273 = 0.0,
16019  n272 = 0.0,
16020  n275 = 0.0,
16021  n274 = 0.0,
16022  n277 = 0.0,
16023  n276 = 0.0,
16024  n424 = 0.0,
16025  n357 = 0.0,
16026  n426 = 0.0,
16027  n297 = 0.0,
16028  n296 = 0.0,
16029  n295 = 0.0,
16030  n427 = 0.0,
16031  n293 = 0.0,
16032  n292 = 0.0,
16033  n291 = 0.0,
16034  n290 = 0.0,
16035  n420 = 0.0,
16036  n299 = 0.0,
16037  n421 = 0.0,
16038  n422 = 0.0,
16039  n351 = 0.0,
16040  n198 = 0.0,
16041  n199 = 0.0,
16042  n194 = 0.0,
16043  n195 = 0.0,
16044  n196 = 0.0,
16045  n197 = 0.0,
16046  n190 = 0.0,
16047  n191 = 0.0,
16048  n192 = 0.0,
16049  n193 = 0.0,
16050  n619 = 0.0,
16051  n618 = 0.0,
16052  n208 = 0.0,
16053  n209 = 0.0,
16054  n204 = 0.0,
16055  n205 = 0.0,
16056  n206 = 0.0,
16057  n207 = 0.0,
16058  n200 = 0.0,
16059  n201 = 0.0,
16060  n202 = 0.0,
16061  n203 = 0.0,
16062  n107 = 0.0,
16063  n106 = 0.0,
16064  n105 = 0.0,
16065  n104 = 0.0,
16066  n103 = 0.0,
16067  n102 = 0.0,
16068  n101 = 0.0,
16069  n100 = 0.0,
16070  n0 = 0.0,
16071  n1 = 0.0,
16072  n2 = 0.0,
16073  n3 = 0.0,
16074  n4 = 0.0,
16075  n5 = 0.0,
16076  n6 = 0.0,
16077  n7 = 0.0,
16078  n563 = 0.0,
16079  n562 = 0.0,
16080  n38 = 0.0,
16081  n39 = 0.0,
16082  n30 = 0.0,
16083  n31 = 0.0,
16084  n32 = 0.0,
16085  n33 = 0.0,
16086  n34 = 0.0,
16087  n35 = 0.0,
16088  n36 = 0.0,
16089  n37 = 0.0,
16090  n569 = 0.0,
16091  n568 = 0.0,
16092  g7 = 0.0,
16093  g6 = 0.0,
16094  g5 = 0.0,
16095  g4 = 0.0,
16096  g3 = 0.0,
16097  g2 = 0.0,
16098  g1 = 0.0,
16099  g0 = 0.0,
16100  g9 = 0.0,
16101  g8 = 0.0,
16102  g168 = 0.0,
16103  g169 = 0.0,
16104  n629 = 0.0,
16105  g162 = 0.0,
16106  g163 = 0.0,
16107  g160 = 0.0,
16108  g161 = 0.0,
16109  g166 = 0.0,
16110  g167 = 0.0,
16111  g164 = 0.0,
16112  g165 = 0.0,
16113  n85 = 0.0,
16114  n84 = 0.0,
16115  n87 = 0.0,
16116  n86 = 0.0,
16117  n81 = 0.0,
16118  n80 = 0.0,
16119  n83 = 0.0,
16120  n82 = 0.0,
16121  n89 = 0.0,
16122  n88 = 0.0,
16123  g346 = 0.0,
16124  g347 = 0.0,
16125  g344 = 0.0,
16126  g345 = 0.0,
16127  g342 = 0.0,
16128  g343 = 0.0,
16129  g340 = 0.0,
16130  g341 = 0.0,
16131  g348 = 0.0,
16132  g349 = 0.0,
16133  g269 = 0.0,
16134  g268 = 0.0,
16135  g265 = 0.0,
16136  g264 = 0.0,
16137  g267 = 0.0,
16138  g266 = 0.0,
16139  g261 = 0.0,
16140  g260 = 0.0,
16141  g263 = 0.0,
16142  g262 = 0.0,
16143  g26 = 0.0,
16144  g27 = 0.0,
16145  g24 = 0.0,
16146  g25 = 0.0,
16147  g22 = 0.0,
16148  g23 = 0.0,
16149  g20 = 0.0,
16150  g21 = 0.0,
16151  g28 = 0.0,
16152  g29 = 0.0,
16153  g53 = 0.0,
16154  g52 = 0.0,
16155  g51 = 0.0,
16156  g50 = 0.0,
16157  g57 = 0.0,
16158  g56 = 0.0,
16159  g55 = 0.0,
16160  g54 = 0.0,
16161  g59 = 0.0,
16162  g58 = 0.0,
16163  n565 = 0.0,
16164  n564 = 0.0,
16165  n567 = 0.0,
16166  n566 = 0.0,
16167  n561 = 0.0,
16168  n560 = 0.0,
16169  n448 = 0.0,
16170  n449 = 0.0,
16171  n446 = 0.0,
16172  n447 = 0.0,
16173  n444 = 0.0,
16174  n445 = 0.0,
16175  n442 = 0.0,
16176  n443 = 0.0,
16177  n440 = 0.0,
16178  n441 = 0.0,
16179  n363 = 0.0,
16180  n362 = 0.0,
16181  n361 = 0.0,
16182  n360 = 0.0,
16183  n367 = 0.0,
16184  n366 = 0.0,
16185  n365 = 0.0,
16186  n364 = 0.0,
16187  n369 = 0.0,
16188  n368 = 0.0,
16189  n598 = 0.0,
16190  n599 = 0.0,
16191  n590 = 0.0,
16192  n591 = 0.0,
16193  n592 = 0.0,
16194  n593 = 0.0,
16195  n594 = 0.0,
16196  n595 = 0.0,
16197  n596 = 0.0,
16198  n597 = 0.0,
16199  n510 = 0.0,
16200  n626 = 0.0,
16201  n627 = 0.0,
16202  n624 = 0.0,
16203  n625 = 0.0,
16204  n622 = 0.0,
16205  n623 = 0.0,
16206  n189 = 0.0,
16207  n188 = 0.0,
16208  n187 = 0.0,
16209  n186 = 0.0,
16210  n185 = 0.0,
16211  n184 = 0.0,
16212  n183 = 0.0,
16213  n182 = 0.0,
16214  n181 = 0.0,
16215  n180 = 0.0,
16216  n219 = 0.0,
16217  n218 = 0.0,
16218  n217 = 0.0,
16219  n216 = 0.0,
16220  n215 = 0.0,
16221  n214 = 0.0,
16222  n213 = 0.0,
16223  n212 = 0.0,
16224  n211 = 0.0,
16225  n210 = 0.0,
16226  n132 = 0.0,
16227  n133 = 0.0,
16228  n130 = 0.0,
16229  n131 = 0.0,
16230  n136 = 0.0,
16231  n137 = 0.0,
16232  n134 = 0.0,
16233  n135 = 0.0,
16234  n138 = 0.0,
16235  n139 = 0.0,
16236  g175 = 0.0,
16237  g174 = 0.0,
16238  g177 = 0.0,
16239  g176 = 0.0,
16240  g171 = 0.0,
16241  g170 = 0.0,
16242  g173 = 0.0,
16243  g172 = 0.0,
16244  g179 = 0.0,
16245  g178 = 0.0,
16246  n98 = 0.0,
16247  n99 = 0.0,
16248  n92 = 0.0,
16249  n93 = 0.0,
16250  n90 = 0.0,
16251  n91 = 0.0,
16252  n96 = 0.0,
16253  n97 = 0.0,
16254  n94 = 0.0,
16255  n95 = 0.0,
16256  g351 = 0.0,
16257  g350 = 0.0,
16258  g353 = 0.0,
16259  g352 = 0.0,
16260  g355 = 0.0,
16261  g354 = 0.0,
16262  g357 = 0.0,
16263  g356 = 0.0,
16264  g359 = 0.0,
16265  g358 = 0.0,
16266  g218 = 0.0,
16267  g219 = 0.0,
16268  g210 = 0.0,
16269  g211 = 0.0,
16270  g212 = 0.0,
16271  g213 = 0.0,
16272  g214 = 0.0,
16273  g215 = 0.0,
16274  g216 = 0.0,
16275  g217 = 0.0,
16276  g188 = 0.0,
16277  g189 = 0.0,
16278  g180 = 0.0,
16279  g181 = 0.0,
16280  g182 = 0.0,
16281  g183 = 0.0,
16282  g184 = 0.0,
16283  g185 = 0.0,
16284  g186 = 0.0,
16285  g187 = 0.0,
16286  g250 = 0.0,
16287  g318 = 0.0,
16288  g324 = 0.0,
16289  g325 = 0.0,
16290  g326 = 0.0,
16291  g327 = 0.0,
16292  g320 = 0.0,
16293  g321 = 0.0,
16294  g322 = 0.0,
16295  g323 = 0.0,
16296  g328 = 0.0,
16297  g329 = 0.0,
16298  g311 = 0.0,
16299  g310 = 0.0,
16300  g40 = 0.0,
16301  g41 = 0.0,
16302  g42 = 0.0,
16303  g43 = 0.0,
16304  g44 = 0.0,
16305  g45 = 0.0,
16306  g46 = 0.0,
16307  g47 = 0.0,
16308  g48 = 0.0,
16309  g49 = 0.0,
16310  n620 = 0.0,
16311  n621 = 0.0,
16312  n459 = 0.0,
16313  n458 = 0.0,
16314  n512 = 0.0,
16315  n513 = 0.0,
16316  n514 = 0.0,
16317  n628 = 0.0,
16318  n516 = 0.0,
16319  n517 = 0.0,
16320  n451 = 0.0,
16321  n450 = 0.0,
16322  n453 = 0.0,
16323  n452 = 0.0,
16324  n455 = 0.0,
16325  n454 = 0.0,
16326  n457 = 0.0,
16327  n456 = 0.0,
16328  n428 = 0.0,
16329  n429 = 0.0,
16330  n358 = 0.0,
16331  n359 = 0.0,
16332  n356 = 0.0,
16333  n425 = 0.0,
16334  n354 = 0.0,
16335  n355 = 0.0,
16336  n352 = 0.0,
16337  n353 = 0.0,
16338  n350 = 0.0,
16339  n423 = 0.0,
16340  n589 = 0.0,
16341  n588 = 0.0,
16342  n583 = 0.0,
16343  n582 = 0.0,
16344  n581 = 0.0,
16345  n580 = 0.0,
16346  n587 = 0.0,
16347  n586 = 0.0,
16348  n585 = 0.0,
16349  n584 = 0.0,
16350  n631 = 0.0,
16351  n630 = 0.0,
16352  n633 = 0.0,
16353  n632 = 0.0,
16354  n635 = 0.0,
16355  n634 = 0.0,
16356  n637 = 0.0,
16357  n636 = 0.0,
16358  n638 = 0.0,
16359  n610 = 0.0,
16360  n228 = 0.0,
16361  n229 = 0.0,
16362  n222 = 0.0,
16363  n223 = 0.0,
16364  n220 = 0.0,
16365  n221 = 0.0,
16366  n226 = 0.0,
16367  n227 = 0.0,
16368  n224 = 0.0,
16369  n225 = 0.0,
16370  n279 = 0.0,
16371  n278 = 0.0,
16372  n271 = 0.0,
16373  n129 = 0.0,
16374  n128 = 0.0,
16375  n270 = 0.0,
16376  n125 = 0.0,
16377  n124 = 0.0,
16378  n127 = 0.0,
16379  n126 = 0.0,
16380  n121 = 0.0,
16381  n120 = 0.0,
16382  n123 = 0.0,
16383  n122 = 0.0,
16384  n12 = 0.0,
16385  n13 = 0.0,
16386  n10 = 0.0,
16387  n11 = 0.0,
16388  n16 = 0.0,
16389  n17 = 0.0,
16390  n14 = 0.0,
16391  n15 = 0.0,
16392  n18 = 0.0,
16393  n19 = 0.0,
16394  n614 = 0.0,
16395  g100 = 0.0,
16396  g101 = 0.0,
16397  g102 = 0.0,
16398  g103 = 0.0,
16399  g104 = 0.0,
16400  g105 = 0.0,
16401  g106 = 0.0,
16402  g107 = 0.0,
16403  g108 = 0.0,
16404  g109 = 0.0,
16405  n511 = 0.0,
16406  g209 = 0.0,
16407  g208 = 0.0,
16408  g203 = 0.0,
16409  g202 = 0.0,
16410  g201 = 0.0,
16411  g200 = 0.0,
16412  g207 = 0.0,
16413  g206 = 0.0,
16414  g205 = 0.0,
16415  g204 = 0.0,
16416  g199 = 0.0,
16417  g198 = 0.0,
16418  g193 = 0.0,
16419  g192 = 0.0,
16420  g191 = 0.0,
16421  g190 = 0.0,
16422  g197 = 0.0,
16423  g196 = 0.0,
16424  g195 = 0.0,
16425  g194 = 0.0,
16426  g290 = 0.0,
16427  g291 = 0.0,
16428  g292 = 0.0,
16429  g293 = 0.0,
16430  g294 = 0.0,
16431  g295 = 0.0,
16432  g296 = 0.0,
16433  g297 = 0.0,
16434  g298 = 0.0,
16435  g299 = 0.0,
16436  g337 = 0.0,
16437  g336 = 0.0,
16438  g335 = 0.0,
16439  g334 = 0.0,
16440  g333 = 0.0,
16441  g332 = 0.0,
16442  g331 = 0.0,
16443  g330 = 0.0,
16444  n298 = 0.0,
16445  g339 = 0.0,
16446  g338 = 0.0,
16447  g75 = 0.0,
16448  g74 = 0.0,
16449  g77 = 0.0,
16450  g76 = 0.0,
16451  g71 = 0.0,
16452  g70 = 0.0,
16453  g73 = 0.0,
16454  g72 = 0.0,
16455  g79 = 0.0,
16456  g78 = 0.0,
16457  n503 = 0.0,
16458  n502 = 0.0,
16459  n501 = 0.0,
16460  n500 = 0.0,
16461  n507 = 0.0,
16462  n506 = 0.0,
16463  n505 = 0.0,
16464  n504 = 0.0,
16465  n509 = 0.0,
16466  n508 = 0.0,
16467  n349 = 0.0,
16468  n348 = 0.0,
16469  n439 = 0.0,
16470  n438 = 0.0,
16471  n437 = 0.0,
16472  n436 = 0.0,
16473  n435 = 0.0,
16474  n434 = 0.0,
16475  n433 = 0.0,
16476  n432 = 0.0,
16477  n431 = 0.0,
16478  n430 = 0.0,
16479  n613 = 0.0,
16480  n612 = 0.0,
16481  n611 = 0.0,
16482  n235 = 0.0,
16483  n234 = 0.0,
16484  n237 = 0.0,
16485  n236 = 0.0,
16486  n231 = 0.0,
16487  n230 = 0.0,
16488  n233 = 0.0,
16489  n232 = 0.0,
16490  n617 = 0.0,
16491  n239 = 0.0,
16492  n238 = 0.0,
16493  n616 = 0.0,
16494  n482 = 0.0,
16495  n483 = 0.0,
16496  n480 = 0.0,
16497  n481 = 0.0,
16498  n338 = 0.0,
16499  n339 = 0.0,
16500  n484 = 0.0,
16501  n485 = 0.0,
16502  n334 = 0.0,
16503  n335 = 0.0,
16504  n336 = 0.0,
16505  n337 = 0.0,
16506  n330 = 0.0,
16507  n331 = 0.0,
16508  n332 = 0.0,
16509  n333 = 0.0,
16510  n158 = 0.0,
16511  n159 = 0.0,
16512  n150 = 0.0,
16513  n151 = 0.0,
16514  n152 = 0.0,
16515  n153 = 0.0,
16516  n154 = 0.0,
16517  n155 = 0.0,
16518  n156 = 0.0,
16519  n157 = 0.0,
16520  n67 = 0.0,
16521  n66 = 0.0,
16522  n65 = 0.0,
16523  n64 = 0.0,
16524  n63 = 0.0,
16525  n62 = 0.0,
16526  n61 = 0.0,
16527  n60 = 0.0,
16528  n69 = 0.0,
16529  n68 = 0.0,
16530  n303 = 0.0,
16531  n302 = 0.0,
16532  g113 = 0.0,
16533  g112 = 0.0,
16534  g111 = 0.0,
16535  g110 = 0.0,
16536  g117 = 0.0,
16537  g116 = 0.0,
16538  g115 = 0.0,
16539  g114 = 0.0,
16540  n262 = 0.0,
16541  g119 = 0.0,
16542  g118 = 0.0,
16543  n308 = 0.0,
16544  n607 = 0.0,
16545  g236 = 0.0,
16546  g237 = 0.0,
16547  g234 = 0.0,
16548  g235 = 0.0,
16549  g232 = 0.0,
16550  g233 = 0.0,
16551  g230 = 0.0,
16552  g231 = 0.0,
16553  g238 = 0.0,
16554  g239 = 0.0,
16555  g283 = 0.0,
16556  g282 = 0.0,
16557  g281 = 0.0,
16558  g280 = 0.0,
16559  g287 = 0.0,
16560  g286 = 0.0,
16561  g285 = 0.0,
16562  g284 = 0.0,
16563  g289 = 0.0,
16564  g288 = 0.0,
16565  g302 = 0.0,
16566  g303 = 0.0,
16567  g300 = 0.0,
16568  g301 = 0.0,
16569  g306 = 0.0,
16570  g307 = 0.0,
16571  g304 = 0.0,
16572  g305 = 0.0,
16573  g308 = 0.0,
16574  g309 = 0.0,
16575  n8 = 0.0,
16576  n9 = 0.0,
16577  g68 = 0.0,
16578  g69 = 0.0,
16579  g62 = 0.0,
16580  g63 = 0.0,
16581  g60 = 0.0,
16582  g61 = 0.0,
16583  g66 = 0.0,
16584  g67 = 0.0,
16585  g64 = 0.0,
16586  g65 = 0.0,
16587  n109 = 0.0,
16588  n108 = 0.0;
16589 
16590  int nuc;
16591  int i = 2;
16592  MW[0] = pyne::atomic_mass(j);
16593  MW[1] = pyne::atomic_mass(k);
16594  xF[0] = casc.mat_feed.comp[j];
16595  xF[1] = casc.mat_feed.comp[k];
16596  for(pyne::comp_iter ci = casc.mat_feed.comp.begin(); ci != casc.mat_feed.comp.end(); ci++)
16597  {
16598  nuc = (*ci).first;
16599  if (nuc == j || nuc == k)
16600  continue;
16601  MW[i] = pyne::atomic_mass(nuc);
16602  xF[i] = (*ci).second;
16603  i++;
16604  };
16605 
16606  switch (ncomp)
16607  {
16608  case 3:
16609  n0 = -2.00000000000000;
16610  n1 = MW[0] - Mstar;
16611  n2 = log(alpha);
16612  n3 = xPj - xTj;
16613  n4 = xF[0] - xPj;
16614  n5 = MW[1] - Mstar;
16615  n6 = MW[2] - Mstar;
16616  n7 = log(xTj);
16617  n8 = -2;
16618  n9 = xF[0]*xPj;
16619  n10 = -Mstar;
16620  n11 = -xTj;
16621  n12 = -NP0*n0;
16622  n13 = pow(n1, -n0);
16623  n14 = pow(n2, -n0);
16624  n15 = pow(n5, -n0);
16625  n16 = pow(n6, -n0);
16626  n17 = Mstar*n2;
16627  n18 = -n0*n2;
16628  n19 = -n2;
16629  n20 = pow(alpha, NP0*n1);
16630  n21 = n11*xF[0] + n9;
16631  n22 = n11*xPj + n9;
16632  n23 = pow(alpha, NP0*n5);
16633  n24 = pow(alpha, NP0*n6);
16634  n25 = MW[0]*n19;
16635  n26 = n3/n4;
16636  n27 = -n14;
16637  n28 = -n20 + 1;
16638  n29 = -n23 + 1;
16639  n30 = pow(alpha, n1*n12);
16640  n31 = pow(n22, -n0);
16641  n32 = -n24 + 1;
16642  n33 = -n32;
16643  n34 = -n20;
16644  n35 = n1*n14;
16645  n36 = 1/(n1*n2);
16646  n37 = n24*n6;
16647  n38 = n23*n5;
16648  n39 = n1*n20;
16649  n40 = n28*xF[0];
16650  n41 = log((-1.0 + xPj/xF[0])/n3);
16651  n42 = n39*xF[0];
16652  n43 = -n29*xF[1];
16653  n44 = n22/n21;
16654  n45 = n14*n16*n24;
16655  n46 = n13*n14*n20;
16656  n47 = n13*n14*n30;
16657  n48 = n34*n44 + 1;
16658  n49 = n17 + n25 + n41 + n7;
16659  n50 = n36*(n49 - log(n48)) + 1;
16660  n51 = pow(alpha, n1*n50);
16661  n52 = pow(alpha, n5*n50);
16662  n53 = pow(alpha, n50*n6);
16663  n54 = n28 - 1 + 1.0/n51;
16664  n55 = n29 - 1 + 1.0/n52;
16665  n56 = n32 - 1 + 1.0/n53;
16666  n57 = pow(n54, 3);
16667  n58 = pow(n55, 3);
16668  n59 = pow(n56, 3);
16669  n60 = xF[2]/n56;
16670  n61 = n2/n54;
16671  n62 = n40/n57;
16672  n63 = n2*n38*xF[1]/n55;
16673  n64 = 1/(n48*n51);
16674  n65 = n46*xF[0]/n54;
16675  n66 = n14*n15*n23*xF[1]/n55;
16676  n67 = n26*n42*n61;
16677  n68 = n19*n26*n42/n54;
16678  n69 = n20*n5/(n48*n52);
16679  n70 = n20*n6/(n48*n53);
16680  n71 = n26*n65;
16681  n72 = n26*n66;
16682  n73 = n26*n45*n60;
16683  n74 = 0.5*n71;
16684  n75 = n44*n64 + 1;
16685  n76 = pow(n21, n8)*n30*n31*pow(n48, n8)/n53;
16686  n77 = pow(n21, n8)*n30*n31*pow(n48, n8)/n52;
16687  n78 = n2*n39*n44*n64 + n2*n39;
16688  n79 = n2*n38 + n2*n44*n69;
16689  n80 = n2*n37 + n2*n44*n70;
16690  n81 = pow(n78, -n0);
16691  n82 = pow(n79, -n0);
16692  n83 = pow(n80, -n0);
16693  n84 = n80*xF[2];
16694  n85 = n18*n39*n44*n64 + n18*n39;
16695  n86 = n44*n46*n64 + n46;
16696  n87 = pow(n54, n8)*n78;
16697  n88 = pow(n55, n8)*n79;
16698  n89 = n29*n82*xF[1]/n58;
16699  n90 = n40*pow(n54, n8)*n86;
16700  n91 = -n26*n40*n87;
16701  n92 = n18*n26*n42*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n1*n2*n44/n48 + n2*n39);
16702  n93 = n18*n26*n38*pow(n55, n8)*xF[1]*(pow(alpha, NP0*n1 - n5*n50)*n2*n44*n5/n48 + n2*n38);
16703  n94 = n18*n26*n37*pow(n56, n8)*xF[2]*(pow(alpha, NP0*n1 - n50*n6)*n2*n44*n6/n48 + n2*n37);
16704  n95 = 1.0*n2*n26*n42*n87;
16705  n96 = -n26*n90;
16706  n97 = -0.5*n26*n90;
16707  n98 = -n78*n85;
16708  n99 = n67 + n91;
16709  n100 = n14*n15*n23 + n15*n27*n77 + n35*n44*n69 + n35*n5*n77;
16710  n101 = n16*n27*n76 + n35*n44*n70 + n35*n6*n76 + n45;
16711  n102 = n26*n43*pow(n55, n8)*(pow(alpha, n1*n12 - n5*n50)*n15*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n5*n50)*pow(n21, n8)*n31*n35*pow(n48, n8)*n5 + n14*n15*n23 + n35*n44*n69);
16712  n103 = n26*n33*pow(n56, n8)*xF[2]*(pow(alpha, n1*n12 - n50*n6)*n16*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n50*n6)*pow(n21, n8)*n31*n35*pow(n48, n8)*n6 + n35*n44*n70 + n45);
16713  n104 = n74 + n95 + n97;
16714  n105 = n2*n26*n37*n60 + n26*n33*pow(n56, n8)*n84 + n26*n43*n88 + n26*n63 + n99;
16715  n106 = n102 + n103 + n71 + n72 + n73 + n92 + n93 + n94 + n96;
16716  n107 = n106 + n26*n33*n84*(n18*n37 + n18*n44*n70)/n59 + n26*n43*n79*(n18*n38 + n18*n44*n69)/n58 + n26*n62*n98;
16717  NP_b = -n12*(1.0*n2*n26*n42*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n1*n2*n44/n48 + n2*n39) - 0.5*n26*n40*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n13*n14*n44/n48 + n46) - 1.0*n26*n62*n81 + n74 - 0.5*xTj*(n26*n32*n8*n83*xF[2]/n59 + n26*n33*pow(n56, n8)*xF[2]*(pow(alpha, NP0*n1 - n50*n6)*n35*n44*n6/n48 + pow(alpha, n1*n12 - n50*n6)*n16*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n50*n6)*pow(n21, n8)*n31*n35*pow(n48, n8)*n6 + n45) - n26*n40*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n13*n14*n44/n48 + n46) + n26*n43*pow(n55, n8)*(pow(alpha, NP0*n1 - n5*n50)*n35*n44*n5/n48 + pow(alpha, n1*n12 - n5*n50)*n15*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n5*n50)*pow(n21, n8)*n31*n35*pow(n48, n8)*n5 + n14*n15*n23) + n26*n62*n8*n81 + n26*n8*n89 + n71 + n72 + n73 + n92 + n93 + n94)) - n2*n26*n39*n40*pow(n54, n8)*n75 - n26*xTj*(n2*n37*n60 + n33*pow(n56, n8)*n84 - n40*n87 + n42*n61 + n43*n88 + n63) - n68;
16718  NP_2a = -n26*(n0*n13*n27*n30*n62*pow(n75, -n0) + n0*n47*pow(n54, n8)*n75*xF[0] + n40*n46*pow(n54, n8)*n75 - 1.0*n65 + 1.0*xTj*(n18*n37*pow(n56, n8)*xF[2]*(pow(alpha, NP0*n1 - n50*n6)*n2*n44*n6/n48 + n2*n37) + n18*n38*pow(n55, n8)*xF[1]*(pow(alpha, NP0*n1 - n5*n50)*n2*n44*n5/n48 + n2*n38) + n18*n42*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n1*n2*n44/n48 + n2*n39) + n32*n8*n83*xF[2]/n59 + n33*pow(n56, n8)*xF[2]*(pow(alpha, n1*n12 - n50*n6)*n16*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n50*n6)*pow(n21, n8)*n31*n35*pow(n48, n8)*n6 + n35*n44*n70 + n45) + n43*pow(n55, n8)*(pow(alpha, n1*n12 - n5*n50)*n15*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n5*n50)*pow(n21, n8)*n31*n35*pow(n48, n8)*n5 + n14*n15*n23 + n35*n44*n69) + n45*n60 + n62*n8*n81 + n65 + n66 + n8*n89 - n90));
16719  NP_sqrt_base = (NP0*(n11*(n2*n26*n37*n60 + n26*n33*pow(n56, n8)*xF[2]*(pow(alpha, NP0*n1 - n50*n6)*n2*n44*n6/n48 + n2*n37) - n26*n40*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n1*n2*n44/n48 + n2*n39) + n26*n43*pow(n55, n8)*(pow(alpha, NP0*n1 - n5*n50)*n2*n44*n5/n48 + n2*n38) + n26*n63 + n67) + n99) + n26*n40/n54 + xTj*(n26*n33*n60 - n26*n40/n54 + n26*n43/n55) + pow(NP0, -n0)*(0.5*n107*xTj - 1.0*n2*n26*n42*n87 + 0.5*n26*n62*n78*n85 + 0.5*n26*n90 - 0.5*n71))*(-n0*n11*(n26*n33*pow(n56, n8)*xF[2]*(pow(alpha, NP0*n1 - n50*n6)*n35*n44*n6/n48 + pow(alpha, n1*n12 - n50*n6)*n16*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n50*n6)*pow(n21, n8)*n31*n35*pow(n48, n8)*n6 + n45) + n26*n33*xF[2]*(pow(alpha, NP0*n1 - n50*n6)*n18*n44*n6/n48 + n18*n37)*(pow(alpha, NP0*n1 - n50*n6)*n2*n44*n6/n48 + n2*n37)/n59 - n26*n40*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n13*n14*n44/n48 + n46) + n26*n43*pow(n55, n8)*(pow(alpha, NP0*n1 - n5*n50)*n35*n44*n5/n48 + pow(alpha, n1*n12 - n5*n50)*n15*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n5*n50)*pow(n21, n8)*n31*n35*pow(n48, n8)*n5 + n14*n15*n23) + n26*n43*(pow(alpha, NP0*n1 - n5*n50)*n18*n44*n5/n48 + n18*n38)*(pow(alpha, NP0*n1 - n5*n50)*n2*n44*n5/n48 + n2*n38)/n58 - n26*n62*(pow(alpha, NP0*n1 - n1*n50)*n1*n18*n44/n48 + n18*n39)*(pow(alpha, NP0*n1 - n1*n50)*n1*n2*n44/n48 + n2*n39) + n71 + n72 + n73 + n92 + n93 + n94) - n0*n71 - n0*n96 + 4.0*n2*n26*n42*n87 - 4.0*n26*n62*n81) + pow(-n105*xTj - n12*(1.0*n2*n26*n42*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n1*n2*n44/n48 + n2*n39) - 0.5*n26*n40*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n13*n14*n44/n48 + n46) - 0.5*n26*n62*(pow(alpha, NP0*n1 - n1*n50)*n1*n18*n44/n48 + n18*n39)*(pow(alpha, NP0*n1 - n1*n50)*n1*n2*n44/n48 + n2*n39) + n74 - 0.5*xTj*(n26*n33*pow(n56, n8)*xF[2]*(pow(alpha, NP0*n1 - n50*n6)*n35*n44*n6/n48 + pow(alpha, n1*n12 - n50*n6)*n16*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n50*n6)*pow(n21, n8)*n31*n35*pow(n48, n8)*n6 + n45) + n26*n33*xF[2]*(pow(alpha, NP0*n1 - n50*n6)*n18*n44*n6/n48 + n18*n37)*(pow(alpha, NP0*n1 - n50*n6)*n2*n44*n6/n48 + n2*n37)/n59 - n26*n40*pow(n54, n8)*(pow(alpha, NP0*n1 - n1*n50)*n13*n14*n44/n48 + n46) + n26*n43*pow(n55, n8)*(pow(alpha, NP0*n1 - n5*n50)*n35*n44*n5/n48 + pow(alpha, n1*n12 - n5*n50)*n15*pow(n21, n8)*n27*n31*pow(n48, n8) + pow(alpha, n1*n12 - n5*n50)*pow(n21, n8)*n31*n35*pow(n48, n8)*n5 + n14*n15*n23) + n26*n43*(pow(alpha, NP0*n1 - n5*n50)*n18*n44*n5/n48 + n18*n38)*(pow(alpha, NP0*n1 - n5*n50)*n2*n44*n5/n48 + n2*n38)/n58 - n26*n62*(pow(alpha, NP0*n1 - n1*n50)*n1*n18*n44/n48 + n18*n39)*(pow(alpha, NP0*n1 - n1*n50)*n1*n2*n44/n48 + n2*n39) + n71 + n72 + n73 + n92 + n93 + n94)) - n26*n40*n87 - n68, -n0);
16720  NP_sqrt_base = fabs(NP_sqrt_base);
16721  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
16722  NT1 = n36*(n49 - log(-pow(alpha, NP1*n1)*n44 + 1));
16723  g0 = MW[1] - Mstar;
16724  g1 = MW[0] - Mstar;
16725  g2 = NT1 + 1;
16726  g3 = xPj - xTj;
16727  g4 = MW[2] - Mstar;
16728  g5 = xF[0] - xTj;
16729  g6 = xF[0] - xPj;
16730  g7 = -xTj;
16731  g8 = xPj/xF[1];
16732  g9 = pow(alpha, -g1);
16733  g10 = pow(alpha, -g0);
16734  g11 = pow(alpha, -g4);
16735  g12 = log(xF[0]/xF[1]);
16736  g13 = -g2;
16737  g14 = pow(alpha, NP1*g0);
16738  g15 = pow(alpha, NP1*g1);
16739  g16 = log(g9);
16740  g17 = pow(alpha, NP1*g4);
16741  g18 = -g12;
16742  g19 = g3/g5;
16743  g20 = g5/g3;
16744  g21 = -g14 + 1;
16745  g22 = -g14 + 1;
16746  g23 = -g15 + 1;
16747  g24 = -g17 + 1;
16748  g25 = -g15;
16749  g26 = -g17;
16750  g27 = -1.0*g12;
16751  g28 = -g3/g6;
16752  g29 = pow(alpha, g0*g13) - 1;
16753  g30 = pow(alpha, g0*g13) - 1;
16754  g31 = pow(alpha, g1*g13) - 1;
16755  g32 = pow(alpha, g13*g4) - 1;
16756  g33 = -pow(alpha, g1*g13);
16757  g34 = -pow(alpha, g13*g4);
16758  g35 = g6*g7/(g3*xF[1]);
16759  g36 = g22 + g30;
16760  g37 = -g15 - g33;
16761  g38 = -g17 - g34;
16762  g39 = pow(alpha, g1*g13) + g25;
16763  g40 = g22 + g30;
16764  g41 = pow(alpha, g13*g4) + g26;
16765  g42 = xF[1]/g40;
16766  g43 = xF[2]/g41;
16767  g44 = xF[0]/g39;
16768  g45 = xF[2]/g38;
16769  g46 = xF[1]/g36;
16770  g47 = xF[0]/g37;
16771  g48 = g23/g37;
16772  g49 = g21/g36;
16773  g50 = g24/g38;
16774  g51 = g32/g38;
16775  g52 = g29/g36;
16776  g53 = g31/g37;
16777  g54 = log(g35*g40/g22);
16778  g55 = log(g35*g36/g21);
16779  g56 = log(g20*g40*g8/g30);
16780  g57 = 1.0*g54;
16781  g58 = log(g20*g36*g8/g29);
16782  g59 = 1.0*g56;
16783  g60 = -g22*g42*g57 - g27*xF[0] - g27*xF[1] - g27*xF[2] - g30*g42*g59 - g43*g57*(g26 + 1) - g43*g59*(pow(alpha, g13*g4) - 1) - g44*g57*(g25 + 1) - g44*g59*(pow(alpha, g1*g13) - 1);
16784  LpF = xF[0]*(g9 + 1.0)*(g18 + g48*g55 + g53*g58)/(g16*(g9 - 1.0)) + xF[1]*(g10 + 1.0)*(g18 + g49*g55 + g52*g58)/(g16*(g10 - 1.0)) + xF[2]*(g11 + 1.0)*(g18 + g50*g55 + g51*g58)/(g16*(g11 - 1.0));
16785  PpF = g20;
16786  TpF = -g6/g3;
16787  SWUpF = g60;
16788  SWUpP = g19*g60;
16789  xP[0] = g19*g31*g47;
16790  xP[1] = g19*g29*g46;
16791  xP[2] = g19*g32*g45;
16792  xT[0] = g23*g28*g47;
16793  xT[1] = g21*g28*g46;
16794  xT[2] = g24*g28*g45;
16795  break;
16796  case 4:
16797  n0 = -0.500000000000000;
16798  n1 = MW[0] - Mstar;
16799  n2 = log(alpha);
16800  n3 = xPj - xTj;
16801  n4 = xF[0] - xPj;
16802  n5 = MW[1] - Mstar;
16803  n6 = MW[2] - Mstar;
16804  n7 = MW[3] - Mstar;
16805  n8 = log(xTj);
16806  n9 = -2;
16807  n10 = xF[0]*xPj;
16808  n11 = -Mstar;
16809  n12 = -xF[0];
16810  n13 = -xPj;
16811  n14 = -NP0*n9;
16812  n15 = -xTj;
16813  n16 = pow(n1, -n9);
16814  n17 = pow(n2, -n9);
16815  n18 = pow(n5, -n9);
16816  n19 = pow(n6, -n9);
16817  n20 = pow(n7, -n9);
16818  n21 = Mstar*n2;
16819  n22 = -n2*n9;
16820  n23 = pow(alpha, NP0*n1);
16821  n24 = n10 + n12*xTj;
16822  n25 = n10 + n13*xTj;
16823  n26 = pow(alpha, NP0*n5);
16824  n27 = pow(alpha, NP0*n6);
16825  n28 = pow(alpha, NP0*n7);
16826  n29 = -MW[0]*n2;
16827  n30 = n3/n4;
16828  n31 = -n23 + 1;
16829  n32 = -n26 + 1;
16830  n33 = pow(alpha, n1*n14);
16831  n34 = pow(n24, -n9);
16832  n35 = pow(n25, -n9);
16833  n36 = -n27 + 1;
16834  n37 = -n28 + 1;
16835  n38 = -n36;
16836  n39 = -n23;
16837  n40 = -n26;
16838  n41 = 1/(n1*n2);
16839  n42 = n1*n17;
16840  n43 = n27*n6;
16841  n44 = n37*xF[3];
16842  n45 = n28*n7;
16843  n46 = n1*n23;
16844  n47 = n32*xF[1];
16845  n48 = n26*n5;
16846  n49 = n16*n17;
16847  n50 = log((-1.0 + xPj/xF[0])/n3);
16848  n51 = n25/n24;
16849  n52 = n17*n19*n27;
16850  n53 = n23*n49;
16851  n54 = n17*n20*n28;
16852  n55 = n39*n51 + 1;
16853  n56 = pow(n55, -n9);
16854  n57 = n21 + n29 + n50 + n8;
16855  n58 = n23*n51/n55;
16856  n59 = n17*n33*n35/(n34*n56);
16857  n60 = n41*(n57 - log(n55)) + 1;
16858  n61 = pow(alpha, n1*n60);
16859  n62 = pow(alpha, n5*n60);
16860  n63 = pow(alpha, n6*n60);
16861  n64 = pow(alpha, n60*n7);
16862  n65 = n5/n62;
16863  n66 = n7/n64;
16864  n67 = n6/n63;
16865  n68 = n31 - 1 + 1.0/n61;
16866  n69 = n32 - 1 + 1.0/n62;
16867  n70 = n36 - 1 + 1.0/n63;
16868  n71 = n37 - 1 + 1.0/n64;
16869  n72 = pow(n68, -n9);
16870  n73 = pow(n69, -n9);
16871  n74 = pow(n70, -n9);
16872  n75 = pow(n71, -n9);
16873  n76 = pow(n68, 3);
16874  n77 = pow(n69, 3);
16875  n78 = pow(n70, 3);
16876  n79 = pow(n71, 3);
16877  n80 = xF[2]/n70;
16878  n81 = xF[3]/n71;
16879  n82 = n2/n68;
16880  n83 = xF[0]/n72;
16881  n84 = n2*n81;
16882  n85 = n31*xF[0]/n76;
16883  n86 = -n44/n75;
16884  n87 = n2*n48*xF[1]/n69;
16885  n88 = n53*xF[0]/n68;
16886  n89 = n17*n18*n26*xF[1]/n69;
16887  n90 = n12*n30*n46*n82;
16888  n91 = n30*n88;
16889  n92 = n30*n89;
16890  n93 = n30*n52*n80;
16891  n94 = n30*n54*n81;
16892  n95 = n0*n12*n30*n53/n68;
16893  n96 = n51/(n55*n61) + 1;
16894  n97 = n31*n96;
16895  n98 = n2*n46*n51/(n55*n61) + n2*n46;
16896  n99 = n2*n48 + n2*n58*n65;
16897  n100 = n2*n43 + n2*n58*n67;
16898  n101 = n2*n45 + n2*n58*n66;
16899  n102 = pow(n98, -n9);
16900  n103 = pow(n99, -n9);
16901  n104 = pow(n100, -n9);
16902  n105 = pow(n101, -n9);
16903  n106 = n100*xF[2];
16904  n107 = n22*n46*n51/(n55*n61) + n22*n46;
16905  n108 = n2*n98;
16906  n109 = n51*n53/(n55*n61) + n53;
16907  n110 = n103/n77;
16908  n111 = n105*n9/n79;
16909  n112 = n30*n31*n83*n98;
16910  n113 = n12*n2*n30*n46*n9*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)/n72;
16911  n114 = n22*n30*n48*xF[1]*(pow(alpha, NP0*n1 - n5*n60)*n2*n5*n51/n55 + n2*n48)/n73;
16912  n115 = n22*n30*n43*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n2*n51*n6/n55 + n2*n43)/n74;
16913  n116 = n22*n30*n45*xF[3]*(pow(alpha, NP0*n1 - n60*n7)*n2*n51*n7/n55 + n2*n45)/n75;
16914  n117 = 1.0*n108*n30*n46*n83;
16915  n118 = n12*n30*n31*(pow(alpha, NP0*n1 - n1*n60)*n49*n51/n55 + n53)/n72;
16916  n119 = n0*n109*n30*n31*n83;
16917  n120 = n17*n18*n26 - n18*n59/n62 + n33*n35*n42*n65/(n34*n56) + n42*n58*n65;
16918  n121 = -n19*n59/n63 + n33*n35*n42*n67/(n34*n56) + n42*n58*n67 + n52;
16919  n122 = -n30*n47*(-pow(alpha, n1*n14 - n5*n60)*n17*n18*n35/(n34*n56) + pow(alpha, n1*n14 - n5*n60)*n35*n42*n5/(n34*n56) + n17*n18*n26 + n42*n58*n65)/n73;
16920  n123 = n30*n38*xF[2]*(-pow(alpha, n1*n14 - n6*n60)*n17*n19*n35/(n34*n56) + pow(alpha, n1*n14 - n6*n60)*n35*n42*n6/(n34*n56) + n42*n58*n67 + n52)/n74;
16921  n124 = n30*n86*(-pow(alpha, n1*n14 - n60*n7)*n17*n20*n35/(n34*n56) + pow(alpha, n1*n14 - n60*n7)*n35*n42*n7/(n34*n56) + n42*n58*n66 + n54);
16922  n125 = xTj*(n101*n30*n86 + n106*n30*n38/n74 + n12*n30*n31*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)/n72 + n2*n30*n43*n80 + n30*n45*n84 + n30*n46*n82*xF[0] - n30*n47*n99/n73 + n30*n87);
16923  n126 = n112 + n125 + n90;
16924  n127 = n113 + n114 + n115 + n116 + n118 + n122 + n123 + n124 + n91 + n92 + n93 + n94;
16925  n128 = -n101*n30*n44*(n22*n45 + n22*n58*n66)/n79 + n106*n30*n38*(n22*n43 + n22*n58*n67)/n78 + n12*n30*n31*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)*(pow(alpha, NP0*n1 - n1*n60)*n1*n22*n51/n55 + n22*n46)/n76 + n127 - n30*n47*n99*(n22*n48 + n22*n58*n65)/n77;
16926  NP_b = -n14*(n0*n30*n31*n83*(pow(alpha, NP0*n1 - n1*n60)*n49*n51/n55 + n53) + n0*xTj*(n102*n30*n85*n9 + n104*n30*n36*n9*xF[2]/n78 + n110*n30*n47*n9 + n111*n30*n44 + n113 + n114 + n115 + n116 + n118 + n30*n38*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n42*n51*n6/n55 - pow(alpha, n1*n14 - n6*n60)*n17*n19*n35/(n34*n56) + pow(alpha, n1*n14 - n6*n60)*n35*n42*n6/(n34*n56) + n52)/n74 - n30*n47*(pow(alpha, NP0*n1 - n5*n60)*n42*n5*n51/n55 - pow(alpha, n1*n14 - n5*n60)*n17*n18*n35/(n34*n56) + pow(alpha, n1*n14 - n5*n60)*n35*n42*n5/(n34*n56) + n17*n18*n26)/n73 + n30*n86*(pow(alpha, NP0*n1 - n60*n7)*n42*n51*n7/n55 - pow(alpha, n1*n14 - n60*n7)*n17*n20*n35/(n34*n56) + pow(alpha, n1*n14 - n60*n7)*n35*n42*n7/(n34*n56) + n54) + n91 + n92 + n93 + n94) - 1.0*n102*n30*n85 + 1.0*n2*n30*n46*n83*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46) + n95) - n2*n30*n46*n83*n97 - n30*xTj*(n101*n86 + n106*n38/n74 + n12*n31*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)/n72 + n2*n43*n80 + n45*n84 + n46*n82*xF[0] - n47*n99/n73 + n87) - n90;
16927  NP_2a = -n30*(n12*n31*n33*n49*n9*pow(n96, -n9)/n76 - 2.0*n33*n49*n83*n96 + n53*n83*n97 - 1.0*n88 + 1.0*xTj*(n102*n85*n9 + n104*n36*n9*xF[2]/n78 + n110*n47*n9 + n111*n44 + n12*n2*n46*n9*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)/n72 + n12*n31*(pow(alpha, NP0*n1 - n1*n60)*n49*n51/n55 + n53)/n72 + n22*n43*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n2*n51*n6/n55 + n2*n43)/n74 + n22*n45*xF[3]*(pow(alpha, NP0*n1 - n60*n7)*n2*n51*n7/n55 + n2*n45)/n75 + n22*n48*xF[1]*(pow(alpha, NP0*n1 - n5*n60)*n2*n5*n51/n55 + n2*n48)/n73 + n38*xF[2]*(-pow(alpha, n1*n14 - n6*n60)*n17*n19*n35/(n34*n56) + pow(alpha, n1*n14 - n6*n60)*n35*n42*n6/(n34*n56) + n42*n58*n67 + n52)/n74 - n47*(-pow(alpha, n1*n14 - n5*n60)*n17*n18*n35/(n34*n56) + pow(alpha, n1*n14 - n5*n60)*n35*n42*n5/(n34*n56) + n17*n18*n26 + n42*n58*n65)/n73 + n52*n80 + n54*n81 + n86*(-pow(alpha, n1*n14 - n60*n7)*n17*n20*n35/(n34*n56) + pow(alpha, n1*n14 - n60*n7)*n35*n42*n7/(n34*n56) + n42*n58*n66 + n54) + n88 + n89));
16928  NP_sqrt_base = (-NP0*n126 - n12*n30*n31/(n31 - 1 + pow(alpha, -n1*(n41*(n57 - log(n25*n39/(n10 + n15*xF[0]) + 1)) + 1))) - n15*(-n30*n31*xF[0]/n68 - n30*n36*n80 - n30*n44/n71 - n30*n47/n69) - pow(NP0, -n9)*(-n0*n118 - n0*n12*n30*n31*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)*(pow(alpha, NP0*n1 - n1*n60)*n1*n22*n51/n55 + n22*n46)/n76 - n0*n15*(n113 + n114 + n115 + n116 + n118 + n12*n30*n31*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)*(pow(alpha, NP0*n1 - n1*n60)*n1*n22*n51/n55 + n22*n46)/n76 + n30*n38*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n2*n51*n6/n55 + n2*n43)*(pow(alpha, NP0*n1 - n6*n60)*n22*n51*n6/n55 + n22*n43)/n78 + n30*n38*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n42*n51*n6/n55 - pow(alpha, n1*n14 - n6*n60)*n17*n19*n35/(n34*n56) + pow(alpha, n1*n14 - n6*n60)*n35*n42*n6/(n34*n56) + n52)/n74 - n30*n44*(pow(alpha, NP0*n1 - n60*n7)*n2*n51*n7/n55 + n2*n45)*(pow(alpha, NP0*n1 - n60*n7)*n22*n51*n7/n55 + n22*n45)/n79 - n30*n47*(pow(alpha, NP0*n1 - n5*n60)*n2*n5*n51/n55 + n2*n48)*(pow(alpha, NP0*n1 - n5*n60)*n22*n5*n51/n55 + n22*n48)/n77 - n30*n47*(pow(alpha, NP0*n1 - n5*n60)*n42*n5*n51/n55 - pow(alpha, n1*n14 - n5*n60)*n17*n18*n35/(n34*n56) + pow(alpha, n1*n14 - n5*n60)*n35*n42*n5/(n34*n56) + n17*n18*n26)/n73 + n30*n86*(pow(alpha, NP0*n1 - n60*n7)*n42*n51*n7/n55 - pow(alpha, n1*n14 - n60*n7)*n17*n20*n35/(n34*n56) + pow(alpha, n1*n14 - n60*n7)*n35*n42*n7/(n34*n56) + n54) + n91 + n92 + n93 + n94) - n0*n91 + 1.0*n108*n30*n46*n83))*(-4.0*n102*n30*n85 + 4.0*n108*n30*n46*n83 - n118*n9 - n15*n9*(n113 + n114 + n115 + n116 + n118 + n12*n30*n31*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)*(pow(alpha, NP0*n1 - n1*n60)*n1*n22*n51/n55 + n22*n46)/n76 + n30*n38*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n2*n51*n6/n55 + n2*n43)*(pow(alpha, NP0*n1 - n6*n60)*n22*n51*n6/n55 + n22*n43)/n78 + n30*n38*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n42*n51*n6/n55 - pow(alpha, n1*n14 - n6*n60)*n17*n19*n35/(n34*n56) + pow(alpha, n1*n14 - n6*n60)*n35*n42*n6/(n34*n56) + n52)/n74 - n30*n44*(pow(alpha, NP0*n1 - n60*n7)*n2*n51*n7/n55 + n2*n45)*(pow(alpha, NP0*n1 - n60*n7)*n22*n51*n7/n55 + n22*n45)/n79 - n30*n47*(pow(alpha, NP0*n1 - n5*n60)*n2*n5*n51/n55 + n2*n48)*(pow(alpha, NP0*n1 - n5*n60)*n22*n5*n51/n55 + n22*n48)/n77 - n30*n47*(pow(alpha, NP0*n1 - n5*n60)*n42*n5*n51/n55 - pow(alpha, n1*n14 - n5*n60)*n17*n18*n35/(n34*n56) + pow(alpha, n1*n14 - n5*n60)*n35*n42*n5/(n34*n56) + n17*n18*n26)/n73 + n30*n86*(pow(alpha, NP0*n1 - n60*n7)*n42*n51*n7/n55 - pow(alpha, n1*n14 - n60*n7)*n17*n20*n35/(n34*n56) + pow(alpha, n1*n14 - n60*n7)*n35*n42*n7/(n34*n56) + n54) + n91 + n92 + n93 + n94) + 2.0*n91) + pow(-n126 - n14*(n0*n30*n31*n83*(pow(alpha, NP0*n1 - n1*n60)*n49*n51/n55 + n53) + n0*n30*n85*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)*(pow(alpha, NP0*n1 - n1*n60)*n1*n22*n51/n55 + n22*n46) + n0*xTj*(n113 + n114 + n115 + n116 + n118 + n12*n30*n31*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46)*(pow(alpha, NP0*n1 - n1*n60)*n1*n22*n51/n55 + n22*n46)/n76 + n30*n38*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n2*n51*n6/n55 + n2*n43)*(pow(alpha, NP0*n1 - n6*n60)*n22*n51*n6/n55 + n22*n43)/n78 + n30*n38*xF[2]*(pow(alpha, NP0*n1 - n6*n60)*n42*n51*n6/n55 - pow(alpha, n1*n14 - n6*n60)*n17*n19*n35/(n34*n56) + pow(alpha, n1*n14 - n6*n60)*n35*n42*n6/(n34*n56) + n52)/n74 - n30*n44*(pow(alpha, NP0*n1 - n60*n7)*n2*n51*n7/n55 + n2*n45)*(pow(alpha, NP0*n1 - n60*n7)*n22*n51*n7/n55 + n22*n45)/n79 - n30*n47*(pow(alpha, NP0*n1 - n5*n60)*n2*n5*n51/n55 + n2*n48)*(pow(alpha, NP0*n1 - n5*n60)*n22*n5*n51/n55 + n22*n48)/n77 - n30*n47*(pow(alpha, NP0*n1 - n5*n60)*n42*n5*n51/n55 - pow(alpha, n1*n14 - n5*n60)*n17*n18*n35/(n34*n56) + pow(alpha, n1*n14 - n5*n60)*n35*n42*n5/(n34*n56) + n17*n18*n26)/n73 + n30*n86*(pow(alpha, NP0*n1 - n60*n7)*n42*n51*n7/n55 - pow(alpha, n1*n14 - n60*n7)*n17*n20*n35/(n34*n56) + pow(alpha, n1*n14 - n60*n7)*n35*n42*n7/(n34*n56) + n54) + n91 + n92 + n93 + n94) + 1.0*n2*n30*n46*n83*(pow(alpha, NP0*n1 - n1*n60)*n1*n2*n51/n55 + n2*n46) + n95), -n9);
16929  NP_sqrt_base = fabs(NP_sqrt_base);
16930  NP1 = (-NP_b - pow(NP_sqrt_base, -n0))/NP_2a;
16931  NT1 = n41*(n57 - log(-pow(alpha, NP1*n1)*n51 + 1));
16932  g0 = MW[1] - Mstar;
16933  g1 = MW[0] - Mstar;
16934  g2 = NT1 + 1;
16935  g3 = xPj - xTj;
16936  g4 = MW[2] - Mstar;
16937  g5 = MW[3] - Mstar;
16938  g6 = xF[0] - xTj;
16939  g7 = xF[0] - xPj;
16940  g8 = -xTj;
16941  g9 = xPj/xF[1];
16942  g10 = pow(alpha, -g1);
16943  g11 = pow(alpha, -g0);
16944  g12 = pow(alpha, -g4);
16945  g13 = pow(alpha, -g5);
16946  g14 = log(xF[0]/xF[1]);
16947  g15 = -g2;
16948  g16 = pow(alpha, NP1*g0);
16949  g17 = pow(alpha, NP1*g1);
16950  g18 = log(g10);
16951  g19 = pow(alpha, NP1*g4);
16952  g20 = pow(alpha, NP1*g5);
16953  g21 = -g14;
16954  g22 = g3/g6;
16955  g23 = g6/g3;
16956  g24 = -g16 + 1;
16957  g25 = -g16 + 1;
16958  g26 = -g17 + 1;
16959  g27 = -g19 + 1;
16960  g28 = -g20 + 1;
16961  g29 = -g17;
16962  g30 = -g19;
16963  g31 = -g20;
16964  g32 = -1.0*g14;
16965  g33 = -g3/g7;
16966  g34 = pow(alpha, g0*g15) - 1;
16967  g35 = pow(alpha, g0*g15) - 1;
16968  g36 = pow(alpha, g1*g15) - 1;
16969  g37 = pow(alpha, g15*g4) - 1;
16970  g38 = pow(alpha, g15*g5) - 1;
16971  g39 = -pow(alpha, g1*g15);
16972  g40 = -pow(alpha, g15*g4);
16973  g41 = -pow(alpha, g15*g5);
16974  g42 = g7*g8/(g3*xF[1]);
16975  g43 = g25 + g35;
16976  g44 = -g17 - g39;
16977  g45 = -g19 - g40;
16978  g46 = -g20 - g41;
16979  g47 = pow(alpha, g1*g15) + g29;
16980  g48 = g25 + g35;
16981  g49 = pow(alpha, g15*g4) + g30;
16982  g50 = pow(alpha, g15*g5) + g31;
16983  g51 = xF[0]/g47;
16984  g52 = xF[1]/g48;
16985  g53 = xF[3]/g50;
16986  g54 = xF[2]/g49;
16987  g55 = xF[1]/g43;
16988  g56 = xF[0]/g44;
16989  g57 = xF[3]/g46;
16990  g58 = xF[2]/g45;
16991  g59 = g26/g44;
16992  g60 = g28/g46;
16993  g61 = g24/g43;
16994  g62 = g27/g45;
16995  g63 = g34/g43;
16996  g64 = g37/g45;
16997  g65 = g36/g44;
16998  g66 = g38/g46;
16999  g67 = log(g42*g48/g25);
17000  g68 = log(g42*g43/g24);
17001  g69 = log(g23*g48*g9/g35);
17002  g70 = 1.0*g67;
17003  g71 = log(g23*g43*g9/g34);
17004  g72 = 1.0*g69;
17005  g73 = -g25*g52*g70 - g32*xF[0] - g32*xF[1] - g32*xF[2] - g32*xF[3] - g35*g52*g72 - g51*g70*(g29 + 1) - g51*g72*(pow(alpha, g1*g15) - 1) - g53*g70*(g31 + 1) - g53*g72*(pow(alpha, g15*g5) - 1) - g54*g70*(g30 + 1) - g54*g72*(pow(alpha, g15*g4) - 1);
17006  LpF = xF[0]*(g10 + 1.0)*(g21 + g59*g68 + g65*g71)/(g18*(g10 - 1.0)) + xF[1]*(g11 + 1.0)*(g21 + g61*g68 + g63*g71)/(g18*(g11 - 1.0)) + xF[2]*(g12 + 1.0)*(g21 + g62*g68 + g64*g71)/(g18*(g12 - 1.0)) + xF[3]*(g13 + 1.0)*(g21 + g60*g68 + g66*g71)/(g18*(g13 - 1.0));
17007  PpF = g23;
17008  TpF = -g7/g3;
17009  SWUpF = g73;
17010  SWUpP = g22*g73;
17011  xP[0] = g22*g36*g56;
17012  xP[1] = g22*g34*g55;
17013  xP[2] = g22*g37*g58;
17014  xP[3] = g22*g38*g57;
17015  xT[0] = g26*g33*g56;
17016  xT[1] = g24*g33*g55;
17017  xT[2] = g27*g33*g58;
17018  xT[3] = g28*g33*g57;
17019  break;
17020  case 5:
17021  n0 = MW[0] - Mstar;
17022  n1 = log(alpha);
17023  n2 = xPj - xTj;
17024  n3 = xF[0] - xPj;
17025  n4 = MW[1] - Mstar;
17026  n5 = MW[2] - Mstar;
17027  n6 = MW[3] - Mstar;
17028  n7 = MW[4] - Mstar;
17029  n8 = log(xTj);
17030  n9 = xF[0]*xPj;
17031  n10 = -Mstar;
17032  n11 = 2*NP0;
17033  n12 = -xPj;
17034  n13 = -xF[0];
17035  n14 = -xTj;
17036  n15 = pow(n0, 2);
17037  n16 = pow(n1, 2);
17038  n17 = pow(n4, 2);
17039  n18 = pow(n5, 2);
17040  n19 = pow(n6, 2);
17041  n20 = pow(n7, 2);
17042  n21 = Mstar*n1;
17043  n22 = 2*n1;
17044  n23 = pow(alpha, NP0*n0);
17045  n24 = n13*xTj + n9;
17046  n25 = n12*xTj + n9;
17047  n26 = pow(alpha, NP0*n4);
17048  n27 = pow(alpha, NP0*n5);
17049  n28 = pow(alpha, NP0*n6);
17050  n29 = pow(alpha, NP0*n7);
17051  n30 = -MW[0]*n1;
17052  n31 = n2/n3;
17053  n32 = -n23 + 1;
17054  n33 = -n26 + 1;
17055  n34 = pow(alpha, n0*n11);
17056  n35 = pow(n24, 2);
17057  n36 = pow(n25, 2);
17058  n37 = -n27 + 1;
17059  n38 = -n28 + 1;
17060  n39 = -n29 + 1;
17061  n40 = -n37;
17062  n41 = -n38;
17063  n42 = -n23;
17064  n43 = 1/(n0*n1);
17065  n44 = n0*n16;
17066  n45 = n27*n5;
17067  n46 = n28*n6;
17068  n47 = n29*n7;
17069  n48 = n0*n23;
17070  n49 = n26*n4;
17071  n50 = n15*n16;
17072  n51 = log((-1.0 + xPj/xF[0])/n2);
17073  n52 = -n33*xF[1];
17074  n53 = -n39*xF[4];
17075  n54 = n25/n24;
17076  n55 = n16*n18*n27;
17077  n56 = n16*n20*n29;
17078  n57 = n23*n50;
17079  n58 = n16*n19*n28;
17080  n59 = n42*n54 + 1;
17081  n60 = pow(n59, 2);
17082  n61 = n21 + n30 + n51 + n8;
17083  n62 = n23*n54/n59;
17084  n63 = n16*n34*n36/(n35*n60);
17085  n64 = n43*(n61 - log(n59)) + 1;
17086  n65 = pow(alpha, n0*n64);
17087  n66 = pow(alpha, n4*n64);
17088  n67 = pow(alpha, n5*n64);
17089  n68 = pow(alpha, n6*n64);
17090  n69 = pow(alpha, n64*n7);
17091  n70 = n4/n66;
17092  n71 = n7/n69;
17093  n72 = n6/n68;
17094  n73 = n5/n67;
17095  n74 = n32 - 1 + 1.0/n65;
17096  n75 = n33 - 1 + 1.0/n66;
17097  n76 = n37 - 1 + 1.0/n67;
17098  n77 = n38 - 1 + 1.0/n68;
17099  n78 = n39 - 1 + 1.0/n69;
17100  n79 = pow(n74, 2);
17101  n80 = pow(n75, 2);
17102  n81 = pow(n76, 2);
17103  n82 = pow(n77, 2);
17104  n83 = pow(n78, 2);
17105  n84 = pow(n74, 3);
17106  n85 = pow(n75, 3);
17107  n86 = pow(n76, 3);
17108  n87 = pow(n77, 3);
17109  n88 = pow(n78, 3);
17110  n89 = xF[2]/n76;
17111  n90 = xF[4]/n78;
17112  n91 = xF[3]/n77;
17113  n92 = n1/n74;
17114  n93 = xF[0]/n79;
17115  n94 = n1*n91;
17116  n95 = n32/n74;
17117  n96 = n32*xF[0]/n84;
17118  n97 = n41*xF[3]/n82;
17119  n98 = n1*n49*xF[1]/n75;
17120  n99 = n57*xF[0]/n74;
17121  n100 = n16*n17*n26*xF[1]/n75;
17122  n101 = n31*n48*n92*xF[0];
17123  n102 = n13*n31*n48*n92;
17124  n103 = n31*n99;
17125  n104 = n100*n31;
17126  n105 = n31*n55*n89;
17127  n106 = n31*n58*n91;
17128  n107 = n31*n56*n90;
17129  n108 = 0.5*n103;
17130  n109 = n54/(n59*n65) + 1;
17131  n110 = n109*n32;
17132  n111 = n1*n48*n54/(n59*n65) + n1*n48;
17133  n112 = n1*n49 + n1*n62*n70;
17134  n113 = n1*n45 + n1*n62*n73;
17135  n114 = n1*n46 + n1*n62*n72;
17136  n115 = n1*n47 + n1*n62*n71;
17137  n116 = pow(n111, 2);
17138  n117 = pow(n112, 2);
17139  n118 = pow(n113, 2);
17140  n119 = pow(n114, 2);
17141  n120 = pow(n115, 2);
17142  n121 = n113*xF[2];
17143  n122 = n114*xF[3];
17144  n123 = n22*n48*n54/(n59*n65) + n22*n48;
17145  n124 = n1*n111;
17146  n125 = -2*n116;
17147  n126 = n54*n57/(n59*n65) + n57;
17148  n127 = n111*n32;
17149  n128 = n115*n53;
17150  n129 = n112/n80;
17151  n130 = 2*n120/n88;
17152  n131 = 2*n117/n85;
17153  n132 = 2*n118*xF[2]/n86;
17154  n133 = -2*n119*n38*xF[3]/n87;
17155  n134 = n13*n31*n32*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48)/n79;
17156  n135 = n22*n31*n48*n93*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48);
17157  n136 = n22*n31*n49*xF[1]*(pow(alpha, NP0*n0 - n4*n64)*n1*n4*n54/n59 + n1*n49)/n80;
17158  n137 = n22*n31*n45*xF[2]*(pow(alpha, NP0*n0 - n5*n64)*n1*n5*n54/n59 + n1*n45)/n81;
17159  n138 = n22*n31*n46*xF[3]*(pow(alpha, NP0*n0 - n6*n64)*n1*n54*n6/n59 + n1*n46)/n82;
17160  n139 = n22*n31*n47*xF[4]*(pow(alpha, NP0*n0 - n64*n7)*n1*n54*n7/n59 + n1*n47)/n83;
17161  n140 = 1.0*n124*n31*n48*n93;
17162  n141 = n13*n31*n32*(pow(alpha, NP0*n0 - n0*n64)*n50*n54/n59 + n57)/n79;
17163  n142 = -0.5*n126*n31*n32*n93;
17164  n143 = n101 + n134;
17165  n144 = n16*n17*n26 - n17*n63/n66 + n34*n36*n44*n70/(n35*n60) + n44*n62*n70;
17166  n145 = -n18*n63/n67 + n34*n36*n44*n73/(n35*n60) + n44*n62*n73 + n55;
17167  n146 = -n20*n63/n69 + n34*n36*n44*n71/(n35*n60) + n44*n62*n71 + n56;
17168  n147 = n31*n52*(-pow(alpha, n0*n11 - n4*n64)*n16*n17*n36/(n35*n60) + pow(alpha, n0*n11 - n4*n64)*n36*n4*n44/(n35*n60) + n16*n17*n26 + n44*n62*n70)/n80;
17169  n148 = n31*n40*xF[2]*(-pow(alpha, n0*n11 - n5*n64)*n16*n18*n36/(n35*n60) + pow(alpha, n0*n11 - n5*n64)*n36*n44*n5/(n35*n60) + n44*n62*n73 + n55)/n81;
17170  n149 = n31*n97*(-pow(alpha, n0*n11 - n6*n64)*n16*n19*n36/(n35*n60) + pow(alpha, n0*n11 - n6*n64)*n36*n44*n6/(n35*n60) + n44*n62*n72 + n58);
17171  n150 = n31*n53*(-pow(alpha, n0*n11 - n64*n7)*n16*n20*n36/(n35*n60) + pow(alpha, n0*n11 - n64*n7)*n36*n44*n7/(n35*n60) + n44*n62*n71 + n56)/n83;
17172  n151 = n108 + n140 + n142;
17173  n152 = n1*n31*n45*n89 + n1*n31*n47*n90 + n114*n31*n97 + n121*n31*n40/n81 + n128*n31/n83 + n129*n31*n52 + n143 + n31*n46*n94 + n31*n98;
17174  n153 = n152*xTj;
17175  n154 = n103 + n104 + n105 + n106 + n107 + n135 + n136 + n137 + n138 + n139 + n141 + n147 + n148 + n149 + n150;
17176  n155 = n112*n31*n52*(n22*n49 + n22*n62*n70)/n85 + n121*n31*n40*(n22*n45 + n22*n62*n73)/n86 + n122*n31*n41*(n22*n46 + n22*n62*n72)/n87 + n128*n31*(n22*n47 + n22*n62*n71)/n88 + n13*n31*n32*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48)*(pow(alpha, NP0*n0 - n0*n64)*n0*n22*n54/n59 + n22*n48)/n84 + n154;
17177  n156 = n155*xTj;
17178  n157 = -0.5*n111*n123*n31*n96 + n151 - 0.5*n156;
17179  NP_b = -n1*n110*n31*n48*n93 - n102 - n11*(1.0*n1*n31*n48*n93*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48) + n108 - 1.0*n116*n31*n96 - 0.5*n31*n32*n93*(pow(alpha, NP0*n0 - n0*n64)*n50*n54/n59 + n57) - 0.5*xTj*(n103 + n104 + n105 + n106 + n107 + n125*n31*n96 - n130*n31*n39*xF[4] - n131*n31*n33*xF[1] - n132*n31*n37 + n133*n31 + n135 + n136 + n137 + n138 + n139 + n141 + n31*n40*xF[2]*(pow(alpha, NP0*n0 - n5*n64)*n44*n5*n54/n59 - pow(alpha, n0*n11 - n5*n64)*n16*n18*n36/(n35*n60) + pow(alpha, n0*n11 - n5*n64)*n36*n44*n5/(n35*n60) + n55)/n81 + n31*n52*(pow(alpha, NP0*n0 - n4*n64)*n4*n44*n54/n59 - pow(alpha, n0*n11 - n4*n64)*n16*n17*n36/(n35*n60) + pow(alpha, n0*n11 - n4*n64)*n36*n4*n44/(n35*n60) + n16*n17*n26)/n80 + n31*n53*(pow(alpha, NP0*n0 - n64*n7)*n44*n54*n7/n59 - pow(alpha, n0*n11 - n64*n7)*n16*n20*n36/(n35*n60) + pow(alpha, n0*n11 - n64*n7)*n36*n44*n7/(n35*n60) + n56)/n83 + n31*n97*(pow(alpha, NP0*n0 - n6*n64)*n44*n54*n6/n59 - pow(alpha, n0*n11 - n6*n64)*n16*n19*n36/(n35*n60) + pow(alpha, n0*n11 - n6*n64)*n36*n44*n6/(n35*n60) + n58))) - n31*xTj*(n1*n45*n89 + n1*n47*n90 + n114*n97 + n121*n40/n81 + n128/n83 + n129*n52 + n13*n32*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48)/n79 + n46*n94 + n48*n92*xF[0] + n98);
17180  NP_2a = -n31*(2*pow(n109, 2)*n34*n50*n96 - 2.0*n109*n34*n50*n93 + n110*n57*n93 - 1.0*n99 + 1.0*xTj*(n100 + n125*n96 + n13*n32*(pow(alpha, NP0*n0 - n0*n64)*n50*n54/n59 + n57)/n79 - n130*n39*xF[4] - n131*n33*xF[1] - n132*n37 + n133 + n22*n45*xF[2]*(pow(alpha, NP0*n0 - n5*n64)*n1*n5*n54/n59 + n1*n45)/n81 + n22*n46*xF[3]*(pow(alpha, NP0*n0 - n6*n64)*n1*n54*n6/n59 + n1*n46)/n82 + n22*n47*xF[4]*(pow(alpha, NP0*n0 - n64*n7)*n1*n54*n7/n59 + n1*n47)/n83 + n22*n48*n93*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48) + n22*n49*xF[1]*(pow(alpha, NP0*n0 - n4*n64)*n1*n4*n54/n59 + n1*n49)/n80 + n40*xF[2]*(-pow(alpha, n0*n11 - n5*n64)*n16*n18*n36/(n35*n60) + pow(alpha, n0*n11 - n5*n64)*n36*n44*n5/(n35*n60) + n44*n62*n73 + n55)/n81 + n52*(-pow(alpha, n0*n11 - n4*n64)*n16*n17*n36/(n35*n60) + pow(alpha, n0*n11 - n4*n64)*n36*n4*n44/(n35*n60) + n16*n17*n26 + n44*n62*n70)/n80 + n53*(-pow(alpha, n0*n11 - n64*n7)*n16*n20*n36/(n35*n60) + pow(alpha, n0*n11 - n64*n7)*n36*n44*n7/(n35*n60) + n44*n62*n71 + n56)/n83 + n55*n89 + n56*n90 + n58*n91 + n97*(-pow(alpha, n0*n11 - n6*n64)*n16*n19*n36/(n35*n60) + pow(alpha, n0*n11 - n6*n64)*n36*n44*n6/(n35*n60) + n44*n62*n72 + n58) + n99));
17181  NP_sqrt_base = pow(-n102 - n11*(1.0*n1*n31*n48*n93*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48) + n108 - 0.5*n31*n32*n93*(pow(alpha, NP0*n0 - n0*n64)*n50*n54/n59 + n57) - 0.5*n31*n96*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48)*(pow(alpha, NP0*n0 - n0*n64)*n0*n22*n54/n59 + n22*n48) - 0.5*xTj*(n103 + n104 + n105 + n106 + n107 + n13*n31*n32*(pow(alpha, NP0*n0 - n0*n64)*n0*n1*n54/n59 + n1*n48)*(pow(alpha, NP0*n0 - n0*n64)*n0*n22*n54/n59 + n22*n48)/n84 + n135 + n136 + n137 + n138 + n139 + n141 + n31*n40*xF[2]*(pow(alpha, NP0*n0 - n5*n64)*n1*n5*n54/n59 + n1*n45)*(pow(alpha, NP0*n0 - n5*n64)*n22*n5*n54/n59 + n22*n45)/n86 + n31*n40*xF[2]*(pow(alpha, NP0*n0 - n5*n64)*n44*n5*n54/n59 - pow(alpha, n0*n11 - n5*n64)*n16*n18*n36/(n35*n60) + pow(alpha, n0*n11 - n5*n64)*n36*n44*n5/(n35*n60) + n55)/n81 + n31*n41*xF[3]*(pow(alpha, NP0*n0 - n6*n64)*n1*n54*n6/n59 + n1*n46)*(pow(alpha, NP0*n0 - n6*n64)*n22*n54*n6/n59 + n22*n46)/n87 + n31*n52*(pow(alpha, NP0*n0 - n4*n64)*n1*n4*n54/n59 + n1*n49)*(pow(alpha, NP0*n0 - n4*n64)*n22*n4*n54/n59 + n22*n49)/n85 + n31*n52*(pow(alpha, NP0*n0 - n4*n64)*n4*n44*n54/n59 - pow(alpha, n0*n11 - n4*n64)*n16*n17*n36/(n35*n60) + pow(alpha, n0*n11 - n4*n64)*n36*n4*n44/(n35*n60) + n16*n17*n26)/n80 + n31*n53*(pow(alpha, NP0*n0 - n64*n7)*n1*n54*n7/n59 + n1*n47)*(pow(alpha, NP0*n0 - n64*n7)*n22*n54*n7/n59 + n22*n47)/n88 + n31*n53*(pow(alpha, NP0*n0 - n64*n7)*n44*n54*n7/n59 - pow(alpha, n0*n11 - n64*n7)*n16*n20*n36/(n35*n60) + pow(alpha, n0*n11 - n64*n7)*n36*n44*n7/(n35*n60) + n56)/n83 + n31*n97*(pow(alpha, NP0*n0 - n6*n64)*n44*n54*n6/n59 - pow(alpha, n0*n11 - n6*n64)*n16*n19*n36/(n35*n60) + pow(alpha, n0*n11 - n6*n64)*n36*n44*n6/(n35*n60) + n58))) - n127*n31*n93 - n153, 2) + (-pow(NP0, 2)*n157 + NP0*(n14*(n1*n31*n45*n89 + n1*n31*n47*n90 + n143 + n31*n40*xF[2]*(pow(alpha, NP0*n0 - n5*n64)*n1*n5*n54/n59 + n1*n45)/n81 + n31*n46*n94 + n31*n52*(pow(alpha, NP0*n0 - n4*n64)*n1*n4*n54/n59 + n1*n49)/n80 + n31*n53*(pow(alpha, NP0*n0 - n64*n7)*n1*n54*n7/n59 + n1*n47)/n83 + n31*n97*(pow(alpha, NP0*n0 - n6*n64)*n1*n54*n6/n59 + n1*n46) + n31*n98) + n143) + n31*n95*xF[0] + xTj*(n13*n31*n95 + n31*n40*n89 + n31*n41*n91 + n31*n52/n75 + n31*n53/n78))*(2.0*n103 - 4.0*n116*n31*n96 + 4.0*n124*n31*n48*n93 - 2.0*n126*n31*n32*n93 - 2.0*n156);
17182  NP_sqrt_base = fabs(NP_sqrt_base);
17183  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
17184  NT1 = n43*(n61 - log(-pow(alpha, NP1*n0)*n54 + 1));
17185  g0 = MW[1] - Mstar;
17186  g1 = MW[0] - Mstar;
17187  g2 = NT1 + 1;
17188  g3 = xPj - xTj;
17189  g4 = MW[2] - Mstar;
17190  g5 = MW[3] - Mstar;
17191  g6 = MW[4] - Mstar;
17192  g7 = xF[0] - xTj;
17193  g8 = xF[0] - xPj;
17194  g9 = -xTj;
17195  g10 = 1.0*xF[4];
17196  g11 = 1.0*xF[3];
17197  g12 = 1.0*xF[0];
17198  g13 = xPj/xF[1];
17199  g14 = pow(alpha, -g1);
17200  g15 = pow(alpha, -g0);
17201  g16 = pow(alpha, -g4);
17202  g17 = pow(alpha, -g5);
17203  g18 = pow(alpha, -g6);
17204  g19 = log(xF[0]/xF[1]);
17205  g20 = -g2;
17206  g21 = pow(alpha, NP1*g0);
17207  g22 = pow(alpha, NP1*g1);
17208  g23 = log(g14);
17209  g24 = pow(alpha, NP1*g4);
17210  g25 = pow(alpha, NP1*g5);
17211  g26 = pow(alpha, NP1*g6);
17212  g27 = -g19;
17213  g28 = g3/g7;
17214  g29 = g7/g3;
17215  g30 = -g21 + 1;
17216  g31 = -g21 + 1;
17217  g32 = -g22 + 1;
17218  g33 = -g24 + 1;
17219  g34 = -g25 + 1;
17220  g35 = -g26 + 1;
17221  g36 = -g22;
17222  g37 = -g24;
17223  g38 = -g25;
17224  g39 = -g26;
17225  g40 = -1.0*g19;
17226  g41 = -g3/g8;
17227  g42 = g40*xF[0];
17228  g43 = g40*xF[1];
17229  g44 = g40*xF[2];
17230  g45 = g40*xF[3];
17231  g46 = g40*xF[4];
17232  g47 = pow(alpha, g0*g20) - 1;
17233  g48 = pow(alpha, g0*g20) - 1;
17234  g49 = pow(alpha, g1*g20) - 1;
17235  g50 = pow(alpha, g20*g4) - 1;
17236  g51 = pow(alpha, g20*g5) - 1;
17237  g52 = pow(alpha, g20*g6) - 1;
17238  g53 = -pow(alpha, g1*g20);
17239  g54 = -pow(alpha, g20*g4);
17240  g55 = -pow(alpha, g20*g5);
17241  g56 = -pow(alpha, g20*g6);
17242  g57 = g8*g9/(g3*xF[1]);
17243  g58 = g31 + g48;
17244  g59 = -g22 - g53;
17245  g60 = -g24 - g54;
17246  g61 = -g25 - g55;
17247  g62 = -g26 - g56;
17248  g63 = pow(alpha, g1*g20) + g36;
17249  g64 = g31 + g48;
17250  g65 = pow(alpha, g20*g4) + g37;
17251  g66 = pow(alpha, g20*g5) + g38;
17252  g67 = pow(alpha, g20*g6) + g39;
17253  g68 = xF[1]/g64;
17254  g69 = xF[2]/g65;
17255  g70 = xF[1]/g58;
17256  g71 = xF[3]/g61;
17257  g72 = xF[0]/g59;
17258  g73 = xF[2]/g60;
17259  g74 = xF[4]/g62;
17260  g75 = g12/g59;
17261  g76 = 1.0*g73;
17262  g77 = 1.0*g70;
17263  g78 = g35/g62;
17264  g79 = g32/g59;
17265  g80 = g34/g61;
17266  g81 = g30/g58;
17267  g82 = g33/g60;
17268  g83 = g32*g72;
17269  g84 = g33*g73;
17270  g85 = g30*g70;
17271  g86 = g47/g58;
17272  g87 = g50/g60;
17273  g88 = g51/g61;
17274  g89 = g49/g59;
17275  g90 = g52/g62;
17276  g91 = g47*g70;
17277  g92 = g49*g72;
17278  g93 = g50*g73;
17279  g94 = log(g57*g64/g31);
17280  g95 = log(g57*g58/g30);
17281  g96 = log(g13*g29*g64/g48);
17282  g97 = 1.0*g94;
17283  g98 = log(g13*g29*g58/g47);
17284  g99 = 1.0*g96;
17285  g100 = g42 + g43 + g44 + g45 + g46;
17286  g101 = g78*g95;
17287  g102 = g79*g95;
17288  g103 = g82*g95;
17289  g104 = g81*g95;
17290  g105 = g80*g95;
17291  g106 = g87*g98;
17292  g107 = g88*g98;
17293  g108 = g90*g98;
17294  g109 = g86*g98;
17295  g110 = g89*g98;
17296  LpF = xF[0]*(g14 + 1.0)*(g102 + g110 + g27)/(g23*(g14 - 1.0)) + xF[1]*(g15 + 1.0)*(g104 + g109 + g27)/(g23*(g15 - 1.0)) + xF[2]*(g16 + 1.0)*(g103 + g106 + g27)/(g23*(g16 - 1.0)) + xF[3]*(g17 + 1.0)*(g105 + g107 + g27)/(g23*(g17 - 1.0)) + xF[4]*(g18 + 1.0)*(g101 + g108 + g27)/(g23*(g18 - 1.0));
17297  PpF = g29;
17298  TpF = -g8/g3;
17299  SWUpF = -g10*g94*(g39 + 1)/g67 - g10*g96*(pow(alpha, g20*g6) - 1)/g67 - g100 - g11*g94*(g38 + 1)/g66 - g11*g96*(pow(alpha, g20*g5) - 1)/g66 - g12*g94*(g36 + 1)/g63 - g12*g96*(pow(alpha, g1*g20) - 1)/g63 - g31*g68*g97 - g48*g68*g99 - g69*g97*(g37 + 1) - g69*g99*(pow(alpha, g20*g4) - 1);
17300  SWUpP = -g28*(g10*g101 + g10*g108 + g100 + g105*g11 + g107*g11 + g30*g77*g95 + g32*g75*g95 + g33*g76*g95 + g47*g77*g98 + g49*g75*g98 + g50*g76*g98);
17301  xP[0] = g28*g92;
17302  xP[1] = g28*g91;
17303  xP[2] = g28*g93;
17304  xP[3] = g28*g51*g71;
17305  xP[4] = g28*g52*g74;
17306  xT[0] = g41*g83;
17307  xT[1] = g41*g85;
17308  xT[2] = g41*g84;
17309  xT[3] = g34*g41*g71;
17310  xT[4] = g35*g41*g74;
17311  break;
17312  case 6:
17313  n0 = MW[0] - Mstar;
17314  n1 = log(alpha);
17315  n2 = xPj - xTj;
17316  n3 = xF[0] - xPj;
17317  n4 = MW[1] - Mstar;
17318  n5 = MW[2] - Mstar;
17319  n6 = MW[3] - Mstar;
17320  n7 = MW[4] - Mstar;
17321  n8 = MW[5] - Mstar;
17322  n9 = log(xTj);
17323  n10 = xF[0]*xPj;
17324  n11 = -Mstar;
17325  n12 = -xF[0];
17326  n13 = -xTj;
17327  n14 = -xPj;
17328  n15 = 2*NP0;
17329  n16 = 0.5*xF[0];
17330  n17 = pow(n0, 2);
17331  n18 = pow(n1, 2);
17332  n19 = pow(n4, 2);
17333  n20 = pow(n5, 2);
17334  n21 = pow(n6, 2);
17335  n22 = pow(n7, 2);
17336  n23 = pow(n8, 2);
17337  n24 = Mstar*n1;
17338  n25 = 2*n1;
17339  n26 = -1.0*xF[0];
17340  n27 = pow(alpha, NP0*n0);
17341  n28 = n10 + n12*xTj;
17342  n29 = n10 + n13*xPj;
17343  n30 = pow(alpha, NP0*n4);
17344  n31 = pow(alpha, NP0*n5);
17345  n32 = pow(alpha, NP0*n6);
17346  n33 = pow(alpha, NP0*n7);
17347  n34 = pow(alpha, NP0*n8);
17348  n35 = -MW[0]*n1;
17349  n36 = n2/n3;
17350  n37 = -n27 + 1;
17351  n38 = -n30 + 1;
17352  n39 = pow(alpha, n0*n15);
17353  n40 = pow(n28, 2);
17354  n41 = pow(n29, 2);
17355  n42 = -n31 + 1;
17356  n43 = -n32 + 1;
17357  n44 = -n33 + 1;
17358  n45 = -n34 + 1;
17359  n46 = -n27;
17360  n47 = 1/(n0*n1);
17361  n48 = n0*n18;
17362  n49 = n45*xF[5];
17363  n50 = n32*n6;
17364  n51 = n30*n4;
17365  n52 = n33*n7;
17366  n53 = n0*n27;
17367  n54 = n34*n8;
17368  n55 = n42*xF[2];
17369  n56 = n31*n5;
17370  n57 = n17*n18;
17371  n58 = log((-1.0 + xPj/xF[0])/n2);
17372  n59 = n56*xF[2];
17373  n60 = -n44*xF[4];
17374  n61 = -n38*xF[1];
17375  n62 = n29/n28;
17376  n63 = n18*n20*n31;
17377  n64 = n18*n22*n33;
17378  n65 = n27*n57;
17379  n66 = n18*n21*n32;
17380  n67 = n18*n19*n30;
17381  n68 = -n36*n49;
17382  n69 = n46*n62 + 1;
17383  n70 = pow(n69, 2);
17384  n71 = n24 + n35 + n58 + n9;
17385  n72 = n27*n62/n69;
17386  n73 = n18*n39*n41/(n40*n70);
17387  n74 = n47*(n71 - log(n69)) + 1;
17388  n75 = pow(alpha, n0*n74);
17389  n76 = pow(alpha, n4*n74);
17390  n77 = pow(alpha, n5*n74);
17391  n78 = pow(alpha, n6*n74);
17392  n79 = pow(alpha, n7*n74);
17393  n80 = pow(alpha, n74*n8);
17394  n81 = n4/n76;
17395  n82 = n7/n79;
17396  n83 = n6/n78;
17397  n84 = n8/n80;
17398  n85 = n5/n77;
17399  n86 = n37 - 1 + 1.0/n75;
17400  n87 = n38 - 1 + 1.0/n76;
17401  n88 = n42 - 1 + 1.0/n77;
17402  n89 = n43 - 1 + 1.0/n78;
17403  n90 = n44 - 1 + 1.0/n79;
17404  n91 = n45 - 1 + 1.0/n80;
17405  n92 = pow(n86, 2);
17406  n93 = pow(n87, 2);
17407  n94 = pow(n88, 2);
17408  n95 = pow(n89, 2);
17409  n96 = pow(n90, 2);
17410  n97 = pow(n91, 2);
17411  n98 = pow(n86, 3);
17412  n99 = pow(n87, 3);
17413  n100 = pow(n88, 3);
17414  n101 = pow(n89, 3);
17415  n102 = pow(n90, 3);
17416  n103 = pow(n91, 3);
17417  n104 = xF[1]/n87;
17418  n105 = xF[4]/n90;
17419  n106 = xF[2]/n88;
17420  n107 = xF[3]/n89;
17421  n108 = n1/n88;
17422  n109 = n1/n86;
17423  n110 = n1*n107;
17424  n111 = n37/n98;
17425  n112 = -n43*xF[3]/n95;
17426  n113 = n1*n54*xF[5]/n91;
17427  n114 = n65/n86;
17428  n115 = n18*n23*n34*xF[5]/n91;
17429  n116 = n109*n12*n36*n53;
17430  n117 = n114*n36*xF[0];
17431  n118 = n104*n36*n67;
17432  n119 = n106*n36*n63;
17433  n120 = n107*n36*n66;
17434  n121 = n105*n36*n64;
17435  n122 = n115*n36;
17436  n123 = n114*n16*n36;
17437  n124 = n62/(n69*n75) + 1;
17438  n125 = n1*n53*n62/(n69*n75) + n1*n53;
17439  n126 = n1*n51 + n1*n72*n81;
17440  n127 = n1*n56 + n1*n72*n85;
17441  n128 = n1*n50 + n1*n72*n83;
17442  n129 = n1*n52 + n1*n72*n82;
17443  n130 = n1*n54 + n1*n72*n84;
17444  n131 = pow(n125, 2);
17445  n132 = pow(n126, 2);
17446  n133 = pow(n127, 2);
17447  n134 = pow(n128, 2);
17448  n135 = pow(n129, 2);
17449  n136 = pow(n130, 2);
17450  n137 = n128*xF[3];
17451  n138 = n25*n53*n62/(n69*n75) + n25*n53;
17452  n139 = 2*n131;
17453  n140 = n62*n65/(n69*n75) + n65;
17454  n141 = n129*n60;
17455  n142 = n124*n37*xF[0]/n92;
17456  n143 = n130/n97;
17457  n144 = n127/n94;
17458  n145 = n126/n93;
17459  n146 = n129*xF[4]/n96;
17460  n147 = n125*xF[0]/n92;
17461  n148 = 2*n136/n103;
17462  n149 = 2*n135/n102;
17463  n150 = 2*n132/n99;
17464  n151 = -2*n133/n100;
17465  n152 = -2*n134*n43*xF[3]/n101;
17466  n153 = n140*n37/n92;
17467  n154 = n147*n36*n37;
17468  n155 = n25*n36*n53*xF[0]*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)/n92;
17469  n156 = n25*n36*n51*xF[1]*(pow(alpha, NP0*n0 - n4*n74)*n1*n4*n62/n69 + n1*n51)/n93;
17470  n157 = n25*n36*n59*(pow(alpha, NP0*n0 - n5*n74)*n1*n5*n62/n69 + n1*n56)/n94;
17471  n158 = n25*n36*n50*xF[3]*(pow(alpha, NP0*n0 - n6*n74)*n1*n6*n62/n69 + n1*n50)/n95;
17472  n159 = n25*n36*n52*xF[4]*(pow(alpha, NP0*n0 - n7*n74)*n1*n62*n7/n69 + n1*n52)/n96;
17473  n160 = n25*n36*n54*xF[5]*(pow(alpha, NP0*n0 - n74*n8)*n1*n62*n8/n69 + n1*n54)/n97;
17474  n161 = 1.0*n1*n147*n36*n53;
17475  n162 = n12*n36*n37*(pow(alpha, NP0*n0 - n0*n74)*n57*n62/n69 + n65)/n92;
17476  n163 = -0.5*n153*n36*xF[0];
17477  n164 = n125*n138;
17478  n165 = -n19*n73/n76 + n39*n41*n48*n81/(n40*n70) + n48*n72*n81 + n67;
17479  n166 = -n20*n73/n77 + n39*n41*n48*n85/(n40*n70) + n48*n72*n85 + n63;
17480  n167 = -n22*n73/n79 + n39*n41*n48*n82/(n40*n70) + n48*n72*n82 + n64;
17481  n168 = n18*n23*n34 - n23*n73/n80 + n39*n41*n48*n84/(n40*n70) + n48*n72*n84;
17482  n169 = n36*n61*(-pow(alpha, n0*n15 - n4*n74)*n18*n19*n41/(n40*n70) + pow(alpha, n0*n15 - n4*n74)*n4*n41*n48/(n40*n70) + n48*n72*n81 + n67)/n93;
17483  n170 = -n36*n55*(-pow(alpha, n0*n15 - n5*n74)*n18*n20*n41/(n40*n70) + pow(alpha, n0*n15 - n5*n74)*n41*n48*n5/(n40*n70) + n48*n72*n85 + n63)/n94;
17484  n171 = n112*n36*(-pow(alpha, n0*n15 - n6*n74)*n18*n21*n41/(n40*n70) + pow(alpha, n0*n15 - n6*n74)*n41*n48*n6/(n40*n70) + n48*n72*n83 + n66);
17485  n172 = n36*n60*(-pow(alpha, n0*n15 - n7*n74)*n18*n22*n41/(n40*n70) + pow(alpha, n0*n15 - n7*n74)*n41*n48*n7/(n40*n70) + n48*n72*n82 + n64)/n96;
17486  n173 = n68*(-pow(alpha, n0*n15 - n74*n8)*n18*n23*n41/(n40*n70) + pow(alpha, n0*n15 - n74*n8)*n41*n48*n8/(n40*n70) + n18*n23*n34 + n48*n72*n84)/n97;
17487  n174 = n123 + n161 + n163;
17488  n175 = xTj*(n1*n104*n36*n51 + n1*n105*n36*n52 + n108*n36*n59 + n109*n36*n53*xF[0] + n110*n36*n50 + n112*n128*n36 + n113*n36 + n12*n36*n37*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)/n92 + n141*n36/n96 + n143*n68 - n144*n36*n55 + n145*n36*n61);
17489  n176 = n116 + n154 + n175;
17490  n177 = n117 + n118 + n119 + n120 + n121 + n122 + n155 + n156 + n157 + n158 + n159 + n160 + n162 + n169 + n170 + n171 + n172 + n173;
17491  n178 = n111*n12*n36*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)*(pow(alpha, NP0*n0 - n0*n74)*n0*n25*n62/n69 + n25*n53) + n126*n36*n61*(n25*n51 + n25*n72*n81)/n99 + n177 + n130*n68*(n25*n54 + n25*n72*n84)/n103 + n141*n36*(n25*n52 + n25*n72*n82)/n102 - n137*n36*n43*(n25*n50 + n25*n72*n83)/n101 - n127*n36*n55*(n25*n56 + n25*n72*n85)/n100;
17492  NP_b = -n1*n142*n36*n53 - n116 - n15*(1.0*n1*n36*n53*xF[0]*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)/n92 + n111*n131*n26*n36 + n123 - 0.5*n36*n37*xF[0]*(pow(alpha, NP0*n0 - n0*n74)*n57*n62/n69 + n65)/n92 - 0.5*xTj*(-n111*n139*n36*xF[0] + n112*n36*(pow(alpha, NP0*n0 - n6*n74)*n48*n6*n62/n69 - pow(alpha, n0*n15 - n6*n74)*n18*n21*n41/(n40*n70) + pow(alpha, n0*n15 - n6*n74)*n41*n48*n6/(n40*n70) + n66) + n117 + n118 + n119 + n120 + n121 + n122 - n148*n36*n49 - n149*n36*n44*xF[4] - n150*n36*n38*xF[1] + n151*n36*n55 + n152*n36 + n155 + n156 + n157 + n158 + n159 + n160 + n162 - n36*n55*(pow(alpha, NP0*n0 - n5*n74)*n48*n5*n62/n69 - pow(alpha, n0*n15 - n5*n74)*n18*n20*n41/(n40*n70) + pow(alpha, n0*n15 - n5*n74)*n41*n48*n5/(n40*n70) + n63)/n94 + n36*n60*(pow(alpha, NP0*n0 - n7*n74)*n48*n62*n7/n69 - pow(alpha, n0*n15 - n7*n74)*n18*n22*n41/(n40*n70) + pow(alpha, n0*n15 - n7*n74)*n41*n48*n7/(n40*n70) + n64)/n96 + n36*n61*(pow(alpha, NP0*n0 - n4*n74)*n4*n48*n62/n69 - pow(alpha, n0*n15 - n4*n74)*n18*n19*n41/(n40*n70) + pow(alpha, n0*n15 - n4*n74)*n4*n41*n48/(n40*n70) + n67)/n93 + n68*(pow(alpha, NP0*n0 - n74*n8)*n48*n62*n8/n69 - pow(alpha, n0*n15 - n74*n8)*n18*n23*n41/(n40*n70) + pow(alpha, n0*n15 - n74*n8)*n41*n48*n8/(n40*n70) + n18*n23*n34)/n97)) - n36*xTj*(n1*n104*n51 + n1*n105*n52 + n108*n59 + n109*n53*xF[0] + n110*n50 + n112*n128 + n113 + n12*n37*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)/n92 + n141/n96 - n143*n49 - n144*n55 + n145*n61);
17493  NP_2a = -n36*(2*n111*pow(n124, 2)*n39*n57*xF[0] + n114*n26 - 2.0*n124*n39*n57*xF[0]/n92 + n142*n65 + 1.0*xTj*(n104*n67 + n105*n64 + n106*n63 + n107*n66 - n111*n139*xF[0] + n112*(-pow(alpha, n0*n15 - n6*n74)*n18*n21*n41/(n40*n70) + pow(alpha, n0*n15 - n6*n74)*n41*n48*n6/(n40*n70) + n48*n72*n83 + n66) + n114*xF[0] + n115 + n12*n37*(pow(alpha, NP0*n0 - n0*n74)*n57*n62/n69 + n65)/n92 - n148*n49 - n149*n44*xF[4] - n150*n38*xF[1] + n151*n55 + n152 + n25*n50*xF[3]*(pow(alpha, NP0*n0 - n6*n74)*n1*n6*n62/n69 + n1*n50)/n95 + n25*n51*xF[1]*(pow(alpha, NP0*n0 - n4*n74)*n1*n4*n62/n69 + n1*n51)/n93 + n25*n52*xF[4]*(pow(alpha, NP0*n0 - n7*n74)*n1*n62*n7/n69 + n1*n52)/n96 + n25*n53*xF[0]*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)/n92 + n25*n54*xF[5]*(pow(alpha, NP0*n0 - n74*n8)*n1*n62*n8/n69 + n1*n54)/n97 + n25*n59*(pow(alpha, NP0*n0 - n5*n74)*n1*n5*n62/n69 + n1*n56)/n94 - n49*(-pow(alpha, n0*n15 - n74*n8)*n18*n23*n41/(n40*n70) + pow(alpha, n0*n15 - n74*n8)*n41*n48*n8/(n40*n70) + n18*n23*n34 + n48*n72*n84)/n97 - n55*(-pow(alpha, n0*n15 - n5*n74)*n18*n20*n41/(n40*n70) + pow(alpha, n0*n15 - n5*n74)*n41*n48*n5/(n40*n70) + n48*n72*n85 + n63)/n94 + n60*(-pow(alpha, n0*n15 - n7*n74)*n18*n22*n41/(n40*n70) + pow(alpha, n0*n15 - n7*n74)*n41*n48*n7/(n40*n70) + n48*n72*n82 + n64)/n96 + n61*(-pow(alpha, n0*n15 - n4*n74)*n18*n19*n41/(n40*n70) + pow(alpha, n0*n15 - n4*n74)*n4*n41*n48/(n40*n70) + n48*n72*n81 + n67)/n93));
17494  NP_sqrt_base = pow(-n15*(1.0*n1*n36*n53*xF[0]*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)/n92 - 0.5*n111*n36*xF[0]*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)*(pow(alpha, NP0*n0 - n0*n74)*n0*n25*n62/n69 + n25*n53) + n123 - 0.5*n36*n37*xF[0]*(pow(alpha, NP0*n0 - n0*n74)*n57*n62/n69 + n65)/n92 - 0.5*xTj*(n111*n12*n36*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)*(pow(alpha, NP0*n0 - n0*n74)*n0*n25*n62/n69 + n25*n53) + n112*n36*(pow(alpha, NP0*n0 - n6*n74)*n48*n6*n62/n69 - pow(alpha, n0*n15 - n6*n74)*n18*n21*n41/(n40*n70) + pow(alpha, n0*n15 - n6*n74)*n41*n48*n6/(n40*n70) + n66) + n117 + n118 + n119 + n120 + n121 + n122 + n155 + n156 + n157 + n158 + n159 + n160 + n162 - n36*n55*(pow(alpha, NP0*n0 - n5*n74)*n48*n5*n62/n69 - pow(alpha, n0*n15 - n5*n74)*n18*n20*n41/(n40*n70) + pow(alpha, n0*n15 - n5*n74)*n41*n48*n5/(n40*n70) + n63)/n94 + n36*n60*(pow(alpha, NP0*n0 - n7*n74)*n48*n62*n7/n69 - pow(alpha, n0*n15 - n7*n74)*n18*n22*n41/(n40*n70) + pow(alpha, n0*n15 - n7*n74)*n41*n48*n7/(n40*n70) + n64)/n96 + n36*n61*(pow(alpha, NP0*n0 - n4*n74)*n1*n4*n62/n69 + n1*n51)*(pow(alpha, NP0*n0 - n4*n74)*n25*n4*n62/n69 + n25*n51)/n99 + n36*n61*(pow(alpha, NP0*n0 - n4*n74)*n4*n48*n62/n69 - pow(alpha, n0*n15 - n4*n74)*n18*n19*n41/(n40*n70) + pow(alpha, n0*n15 - n4*n74)*n4*n41*n48/(n40*n70) + n67)/n93 + n68*(pow(alpha, NP0*n0 - n74*n8)*n48*n62*n8/n69 - pow(alpha, n0*n15 - n74*n8)*n18*n23*n41/(n40*n70) + pow(alpha, n0*n15 - n74*n8)*n41*n48*n8/(n40*n70) + n18*n23*n34)/n97 + n68*(pow(alpha, NP0*n0 - n74*n8)*n1*n62*n8/n69 + n1*n54)*(pow(alpha, NP0*n0 - n74*n8)*n25*n62*n8/n69 + n25*n54)/n103 + n36*n60*(pow(alpha, NP0*n0 - n7*n74)*n1*n62*n7/n69 + n1*n52)*(pow(alpha, NP0*n0 - n7*n74)*n25*n62*n7/n69 + n25*n52)/n102 - n36*n43*xF[3]*(pow(alpha, NP0*n0 - n6*n74)*n1*n6*n62/n69 + n1*n50)*(pow(alpha, NP0*n0 - n6*n74)*n25*n6*n62/n69 + n25*n50)/n101 - n36*n55*(pow(alpha, NP0*n0 - n5*n74)*n1*n5*n62/n69 + n1*n56)*(pow(alpha, NP0*n0 - n5*n74)*n25*n5*n62/n69 + n25*n56)/n100)) - n176, 2) + (-pow(NP0, 2)*(-n1*n26*n36*n53*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)/n92 - n111*n16*n36*(pow(alpha, NP0*n0 - n0*n74)*n0*n1*n62/n69 + n1*n53)*(pow(alpha, NP0*n0 - n0*n74)*n0*n25*n62/n69 + n25*n53) + 0.5*n117 - n16*n36*n37*(pow(alpha, NP0*n0 - n0*n74)*n57*n62/n69 + n65)/n92 - 0.5*n178*xTj) - NP0*n176 - n12*n36*n37/(n37 - 1 + pow(alpha, -n0*(n47*(n71 - log(n29*n46/(n10 + n13*xF[0]) + 1)) + 1))) - n13*(-n36*n37*xF[0]/(n37 - 1 + pow(alpha, -n0*(n47*(n71 - log(1 + n46*(n10 + n14*xTj)/n28)) + 1))) - n36*n38*xF[1]/(n38 - 1 + pow(alpha, -n4*(n47*(n71 - log(1 + n46*(n10 + n14*xTj)/n28)) + 1))) - n36*n43*xF[3]/(n43 - 1 + pow(alpha, -n6*(n47*(n71 - log(1 + n46*(n10 + n14*xTj)/n28)) + 1))) - n36*n44*xF[4]/(n44 - 1 + pow(alpha, -n7*(n47*(n71 - log(1 + n46*(n10 + n14*xTj)/n28)) + 1))) - n36*n49/(n45 - 1 + pow(alpha, -n8*(n47*(n71 - log(1 + n46*(n10 + n14*xTj)/n28)) + 1))) - n36*n55/(n42 - 1 + pow(alpha, -n5*(n47*(n71 - log(1 + n46*(n10 + n14*xTj)/n28)) + 1)))))*(4.0*n1*n147*n36*n53 - 4.0*n111*n131*n36*xF[0] + 2.0*n117 - 2.0*n153*n36*xF[0] - 2.0*n178*xTj);
17495  NP_sqrt_base = fabs(NP_sqrt_base);
17496  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
17497  NT1 = n47*(n71 - log(-pow(alpha, NP1*n0)*n62 + 1));
17498  g0 = MW[1] - Mstar;
17499  g1 = MW[0] - Mstar;
17500  g2 = NT1 + 1;
17501  g3 = xPj - xTj;
17502  g4 = MW[2] - Mstar;
17503  g5 = MW[3] - Mstar;
17504  g6 = MW[4] - Mstar;
17505  g7 = MW[5] - Mstar;
17506  g8 = xF[0] - xTj;
17507  g9 = xF[0] - xPj;
17508  g10 = -xTj;
17509  g11 = xPj/xF[1];
17510  g12 = pow(alpha, -g1);
17511  g13 = pow(alpha, -g0);
17512  g14 = pow(alpha, -g4);
17513  g15 = pow(alpha, -g5);
17514  g16 = pow(alpha, -g6);
17515  g17 = pow(alpha, -g7);
17516  g18 = log(xF[0]/xF[1]);
17517  g19 = -g2;
17518  g20 = pow(alpha, NP1*g0);
17519  g21 = pow(alpha, NP1*g1);
17520  g22 = log(g12);
17521  g23 = pow(alpha, NP1*g4);
17522  g24 = pow(alpha, NP1*g5);
17523  g25 = pow(alpha, NP1*g6);
17524  g26 = pow(alpha, NP1*g7);
17525  g27 = -g18;
17526  g28 = g3/g8;
17527  g29 = g8/g3;
17528  g30 = -g20 + 1;
17529  g31 = -g20 + 1;
17530  g32 = -g21 + 1;
17531  g33 = -g23 + 1;
17532  g34 = -g24 + 1;
17533  g35 = -g25 + 1;
17534  g36 = -g26 + 1;
17535  g37 = -g21;
17536  g38 = -g23;
17537  g39 = -g24;
17538  g40 = -g25;
17539  g41 = -g26;
17540  g42 = -1.0*g18;
17541  g43 = -g3/g9;
17542  g44 = pow(alpha, g0*g19) - 1;
17543  g45 = pow(alpha, g0*g19) - 1;
17544  g46 = pow(alpha, g1*g19) - 1;
17545  g47 = pow(alpha, g19*g4) - 1;
17546  g48 = pow(alpha, g19*g5) - 1;
17547  g49 = pow(alpha, g19*g6) - 1;
17548  g50 = pow(alpha, g19*g7) - 1;
17549  g51 = -pow(alpha, g1*g19);
17550  g52 = -pow(alpha, g19*g4);
17551  g53 = -pow(alpha, g19*g5);
17552  g54 = -pow(alpha, g19*g6);
17553  g55 = -pow(alpha, g19*g7);
17554  g56 = g10*g9/(g3*xF[1]);
17555  g57 = g31 + g45;
17556  g58 = -g21 - g51;
17557  g59 = -g23 - g52;
17558  g60 = -g24 - g53;
17559  g61 = -g25 - g54;
17560  g62 = -g26 - g55;
17561  g63 = pow(alpha, g1*g19) + g37;
17562  g64 = g31 + g45;
17563  g65 = pow(alpha, g19*g4) + g38;
17564  g66 = pow(alpha, g19*g5) + g39;
17565  g67 = pow(alpha, g19*g6) + g40;
17566  g68 = pow(alpha, g19*g7) + g41;
17567  g69 = xF[5]/g68;
17568  g70 = xF[4]/g67;
17569  g71 = xF[3]/g66;
17570  g72 = xF[1]/g64;
17571  g73 = xF[2]/g65;
17572  g74 = xF[0]/g63;
17573  g75 = xF[1]/g57;
17574  g76 = xF[3]/g60;
17575  g77 = xF[0]/g58;
17576  g78 = xF[4]/g61;
17577  g79 = xF[5]/g62;
17578  g80 = xF[2]/g59;
17579  g81 = g35/g61;
17580  g82 = g32/g58;
17581  g83 = g34/g60;
17582  g84 = g36/g62;
17583  g85 = g30/g57;
17584  g86 = g33/g59;
17585  g87 = g44/g57;
17586  g88 = g47/g59;
17587  g89 = g48/g60;
17588  g90 = g50/g62;
17589  g91 = g46/g58;
17590  g92 = g49/g61;
17591  g93 = log(g56*g64/g31);
17592  g94 = log(g56*g57/g30);
17593  g95 = log(g11*g29*g64/g45);
17594  g96 = 1.0*g93;
17595  g97 = log(g11*g29*g57/g44);
17596  g98 = 1.0*g95;
17597  g99 = -g31*g72*g96 - g42*xF[0] - g42*xF[1] - g42*xF[2] - g42*xF[3] - g42*xF[4] - g42*xF[5] - g45*g72*g98 - g69*g96*(g41 + 1) - g69*g98*(pow(alpha, g19*g7) - 1) - g70*g96*(g40 + 1) - g70*g98*(pow(alpha, g19*g6) - 1) - g71*g96*(g39 + 1) - g71*g98*(pow(alpha, g19*g5) - 1) - g73*g96*(g38 + 1) - g73*g98*(pow(alpha, g19*g4) - 1) - g74*g96*(g37 + 1) - g74*g98*(pow(alpha, g1*g19) - 1);
17598  LpF = xF[0]*(g12 + 1.0)*(g27 + g82*g94 + g91*g97)/(g22*(g12 - 1.0)) + xF[1]*(g13 + 1.0)*(g27 + g85*g94 + g87*g97)/(g22*(g13 - 1.0)) + xF[2]*(g14 + 1.0)*(g27 + g86*g94 + g88*g97)/(g22*(g14 - 1.0)) + xF[3]*(g15 + 1.0)*(g27 + g83*g94 + g89*g97)/(g22*(g15 - 1.0)) + xF[4]*(g16 + 1.0)*(g27 + g81*g94 + g92*g97)/(g22*(g16 - 1.0)) + xF[5]*(g17 + 1.0)*(g27 + g84*g94 + g90*g97)/(g22*(g17 - 1.0));
17599  PpF = g29;
17600  TpF = -g9/g3;
17601  SWUpF = g99;
17602  SWUpP = g28*g99;
17603  xP[0] = g28*g46*g77;
17604  xP[1] = g28*g44*g75;
17605  xP[2] = g28*g47*g80;
17606  xP[3] = g28*g48*g76;
17607  xP[4] = g28*g49*g78;
17608  xP[5] = g28*g50*g79;
17609  xT[0] = g32*g43*g77;
17610  xT[1] = g30*g43*g75;
17611  xT[2] = g33*g43*g80;
17612  xT[3] = g34*g43*g76;
17613  xT[4] = g35*g43*g78;
17614  xT[5] = g36*g43*g79;
17615  break;
17616  case 7:
17617  n0 = MW[0] - Mstar;
17618  n1 = log(alpha);
17619  n2 = xPj - xTj;
17620  n3 = xF[0] - xPj;
17621  n4 = MW[1] - Mstar;
17622  n5 = MW[2] - Mstar;
17623  n6 = MW[3] - Mstar;
17624  n7 = MW[4] - Mstar;
17625  n8 = MW[5] - Mstar;
17626  n9 = MW[6] - Mstar;
17627  n10 = log(xTj);
17628  n11 = -2;
17629  n12 = xF[0]*xPj;
17630  n13 = -Mstar;
17631  n14 = -NP0*n11;
17632  n15 = -xPj;
17633  n16 = -xF[0];
17634  n17 = pow(n0, -n11);
17635  n18 = pow(n1, -n11);
17636  n19 = pow(n4, -n11);
17637  n20 = pow(n5, -n11);
17638  n21 = pow(n6, -n11);
17639  n22 = pow(n7, -n11);
17640  n23 = pow(n8, -n11);
17641  n24 = pow(n9, -n11);
17642  n25 = Mstar*n1;
17643  n26 = -n1*n11;
17644  n27 = -0.5*xTj;
17645  n28 = pow(alpha, NP0*n0);
17646  n29 = n12 + n16*xTj;
17647  n30 = n12 + n15*xTj;
17648  n31 = pow(alpha, NP0*n4);
17649  n32 = pow(alpha, NP0*n5);
17650  n33 = pow(alpha, NP0*n6);
17651  n34 = pow(alpha, NP0*n7);
17652  n35 = pow(alpha, NP0*n8);
17653  n36 = pow(alpha, NP0*n9);
17654  n37 = -MW[0]*n1;
17655  n38 = n2/n3;
17656  n39 = -n28 + 1;
17657  n40 = -n31 + 1;
17658  n41 = pow(alpha, n0*n14);
17659  n42 = pow(n29, -n11);
17660  n43 = pow(n30, -n11);
17661  n44 = -n32 + 1;
17662  n45 = -n33 + 1;
17663  n46 = -n34 + 1;
17664  n47 = -n35 + 1;
17665  n48 = -n36 + 1;
17666  n49 = -n48;
17667  n50 = -n44;
17668  n51 = -n28;
17669  n52 = 1/(n0*n1);
17670  n53 = n0*n18;
17671  n54 = n32*n5;
17672  n55 = n35*n8;
17673  n56 = n36*n9;
17674  n57 = n33*n6;
17675  n58 = n34*n7;
17676  n59 = n31*n4;
17677  n60 = n0*n28;
17678  n61 = n17*n18;
17679  n62 = log((-1.0 + xPj/xF[0])/n2);
17680  n63 = -n47*xF[5];
17681  n64 = -n40*xF[1];
17682  n65 = -n46*xF[4];
17683  n66 = n30/n29;
17684  n67 = n18*n20*n32;
17685  n68 = n18*n22*n34;
17686  n69 = n28*n61;
17687  n70 = n18*n21*n33;
17688  n71 = n18*n24*n36;
17689  n72 = n38*n63;
17690  n73 = n51*n66 + 1;
17691  n74 = pow(n73, -n11);
17692  n75 = n10 + n25 + n37 + n62;
17693  n76 = n28*n66/n73;
17694  n77 = n18*n41*n43/(n42*n74);
17695  n78 = n52*(n75 - log(n73)) + 1;
17696  n79 = pow(alpha, n0*n78);
17697  n80 = pow(alpha, n4*n78);
17698  n81 = pow(alpha, n5*n78);
17699  n82 = pow(alpha, n6*n78);
17700  n83 = pow(alpha, n7*n78);
17701  n84 = pow(alpha, n78*n8);
17702  n85 = pow(alpha, n78*n9);
17703  n86 = n4/n80;
17704  n87 = n7/n83;
17705  n88 = n6/n82;
17706  n89 = n9/n85;
17707  n90 = n8/n84;
17708  n91 = n5/n81;
17709  n92 = n39 - 1 + 1.0/n79;
17710  n93 = n40 - 1 + 1.0/n80;
17711  n94 = n44 - 1 + 1.0/n81;
17712  n95 = n45 - 1 + 1.0/n82;
17713  n96 = n46 - 1 + 1.0/n83;
17714  n97 = n47 - 1 + 1.0/n84;
17715  n98 = n48 - 1 + 1.0/n85;
17716  n99 = pow(n92, -n11);
17717  n100 = pow(n93, -n11);
17718  n101 = pow(n94, -n11);
17719  n102 = pow(n95, -n11);
17720  n103 = pow(n96, -n11);
17721  n104 = pow(n97, -n11);
17722  n105 = pow(n98, -n11);
17723  n106 = pow(n92, 3);
17724  n107 = pow(n93, 3);
17725  n108 = pow(n94, 3);
17726  n109 = pow(n95, 3);
17727  n110 = pow(n96, 3);
17728  n111 = pow(n97, 3);
17729  n112 = pow(n98, 3);
17730  n113 = xF[6]/n98;
17731  n114 = xF[2]/n94;
17732  n115 = xF[4]/n96;
17733  n116 = xF[3]/n95;
17734  n117 = n1/n92;
17735  n118 = xF[6]/n112;
17736  n119 = n1*xF[5]/n97;
17737  n120 = n1*xF[1]/n93;
17738  n121 = n1*n116;
17739  n122 = n39/n92;
17740  n123 = n39*xF[0]/n106;
17741  n124 = n45*xF[3]/n109;
17742  n125 = -n45*xF[3]/n102;
17743  n126 = n69*xF[0]/n92;
17744  n127 = n18*n19*n31*xF[1]/n93;
17745  n128 = n18*n23*n35*xF[5]/n97;
17746  n129 = n117*n38*n60*xF[0];
17747  n130 = n117*n16*n38*n60;
17748  n131 = n126*n38;
17749  n132 = n127*n38;
17750  n133 = n114*n38*n67;
17751  n134 = n116*n38*n70;
17752  n135 = n115*n38*n68;
17753  n136 = n128*n38;
17754  n137 = n113*n38*n71;
17755  n138 = 0.5*n131;
17756  n139 = n66/(n73*n79) + 1;
17757  n140 = n1*n60*n66/(n73*n79) + n1*n60;
17758  n141 = n1*n59 + n1*n76*n86;
17759  n142 = n1*n54 + n1*n76*n91;
17760  n143 = n1*n57 + n1*n76*n88;
17761  n144 = n1*n58 + n1*n76*n87;
17762  n145 = n1*n55 + n1*n76*n90;
17763  n146 = n1*n56 + n1*n76*n89;
17764  n147 = pow(n140, -n11);
17765  n148 = pow(n141, -n11);
17766  n149 = pow(n142, -n11);
17767  n150 = pow(n143, -n11);
17768  n151 = pow(n144, -n11);
17769  n152 = pow(n145, -n11);
17770  n153 = pow(n146, -n11);
17771  n154 = n142*xF[2];
17772  n155 = n26*n60*n66/(n73*n79) + n26*n60;
17773  n156 = n66*n69/(n73*n79) + n69;
17774  n157 = n153*n48;
17775  n158 = n144*n65;
17776  n159 = n139*n39*xF[0]/n99;
17777  n160 = n145/n104;
17778  n161 = n141/n100;
17779  n162 = n140/n99;
17780  n163 = n146*xF[6]/n105;
17781  n164 = n162*xF[0];
17782  n165 = n149*n44*xF[2]/n108;
17783  n166 = n156*n39/n99;
17784  n167 = n16*n38*n39*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)/n99;
17785  n168 = n1*n11*n16*n38*n60*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)/n99;
17786  n169 = n26*n38*n59*xF[1]*(pow(alpha, NP0*n0 - n4*n78)*n1*n4*n66/n73 + n1*n59)/n100;
17787  n170 = n26*n38*n54*xF[2]*(pow(alpha, NP0*n0 - n5*n78)*n1*n5*n66/n73 + n1*n54)/n101;
17788  n171 = n26*n38*n57*xF[3]*(pow(alpha, NP0*n0 - n6*n78)*n1*n6*n66/n73 + n1*n57)/n102;
17789  n172 = n26*n38*n58*xF[4]*(pow(alpha, NP0*n0 - n7*n78)*n1*n66*n7/n73 + n1*n58)/n103;
17790  n173 = n26*n38*n55*xF[5]*(pow(alpha, NP0*n0 - n78*n8)*n1*n66*n8/n73 + n1*n55)/n104;
17791  n174 = n26*n38*n56*xF[6]*(pow(alpha, NP0*n0 - n78*n9)*n1*n66*n9/n73 + n1*n56)/n105;
17792  n175 = 1.0*n1*n164*n38*n60;
17793  n176 = n16*n38*n39*(pow(alpha, NP0*n0 - n0*n78)*n61*n66/n73 + n69)/n99;
17794  n177 = -0.5*n166*n38*xF[0];
17795  n178 = n129 + n167;
17796  n179 = n18*n19*n31 - n19*n77/n80 + n41*n43*n53*n86/(n42*n74) + n53*n76*n86;
17797  n180 = -n20*n77/n81 + n41*n43*n53*n91/(n42*n74) + n53*n76*n91 + n67;
17798  n181 = -n22*n77/n83 + n41*n43*n53*n87/(n42*n74) + n53*n76*n87 + n68;
17799  n182 = n18*n23*n35 - n23*n77/n84 + n41*n43*n53*n90/(n42*n74) + n53*n76*n90;
17800  n183 = -n24*n77/n85 + n41*n43*n53*n89/(n42*n74) + n53*n76*n89 + n71;
17801  n184 = n38*n64*(-pow(alpha, n0*n14 - n4*n78)*n18*n19*n43/(n42*n74) + pow(alpha, n0*n14 - n4*n78)*n4*n43*n53/(n42*n74) + n18*n19*n31 + n53*n76*n86)/n100;
17802  n185 = n38*n50*xF[2]*(-pow(alpha, n0*n14 - n5*n78)*n18*n20*n43/(n42*n74) + pow(alpha, n0*n14 - n5*n78)*n43*n5*n53/(n42*n74) + n53*n76*n91 + n67)/n101;
17803  n186 = n125*n38*(-pow(alpha, n0*n14 - n6*n78)*n18*n21*n43/(n42*n74) + pow(alpha, n0*n14 - n6*n78)*n43*n53*n6/(n42*n74) + n53*n76*n88 + n70);
17804  n187 = n38*n65*(-pow(alpha, n0*n14 - n7*n78)*n18*n22*n43/(n42*n74) + pow(alpha, n0*n14 - n7*n78)*n43*n53*n7/(n42*n74) + n53*n76*n87 + n68)/n103;
17805  n188 = n72*(-pow(alpha, n0*n14 - n78*n8)*n18*n23*n43/(n42*n74) + pow(alpha, n0*n14 - n78*n8)*n43*n53*n8/(n42*n74) + n18*n23*n35 + n53*n76*n90)/n104;
17806  n189 = n38*n49*xF[6]*(-pow(alpha, n0*n14 - n78*n9)*n18*n24*n43/(n42*n74) + pow(alpha, n0*n14 - n78*n9)*n43*n53*n9/(n42*n74) + n53*n76*n89 + n71)/n105;
17807  n190 = n138 + n175 + n177;
17808  n191 = n1*n113*n38*n56 + n1*n114*n38*n54 + n1*n115*n38*n58 + n119*n38*n55 + n120*n38*n59 + n121*n38*n57 + n125*n143*n38 + n160*n72 + n161*n38*n64 + n163*n38*n49 + n178 + n158*n38/n103 + n154*n38*n50/n101;
17809  n192 = n191*xTj;
17810  n193 = n131 + n132 + n133 + n134 + n135 + n136 + n137 + n168 + n169 + n170 + n171 + n172 + n173 + n174 + n176 + n184 + n185 + n186 + n187 + n188 + n189;
17811  n194 = n118*n146*n38*n49*(n26*n56 + n26*n76*n89) - n124*n143*n38*(n26*n57 + n26*n76*n88) + n193 + n145*n72*(n26*n55 + n26*n76*n90)/n111 + n158*n38*(n26*n58 + n26*n76*n87)/n110 + n154*n38*n50*(n26*n54 + n26*n76*n91)/n108 + n141*n38*n64*(n26*n59 + n26*n76*n86)/n107 + n16*n38*n39*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)*(pow(alpha, NP0*n0 - n0*n78)*n0*n26*n66/n73 + n26*n60)/n106;
17812  NP_b = -n1*n159*n38*n60 - n130 - n14*(1.0*n1*n38*n60*xF[0]*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)/n99 - 1.0*n123*n147*n38 + n138 + n27*(n11*n118*n157*n38 + n11*n123*n147*n38 + n11*n124*n150*n38 + n11*n165*n38 + n11*n152*n38*n47*xF[5]/n111 + n11*n151*n38*n46*xF[4]/n110 + n125*n38*(pow(alpha, NP0*n0 - n6*n78)*n53*n6*n66/n73 - pow(alpha, n0*n14 - n6*n78)*n18*n21*n43/(n42*n74) + pow(alpha, n0*n14 - n6*n78)*n43*n53*n6/(n42*n74) + n70) + n131 + n132 + n133 + n134 + n135 + n136 + n137 + n168 + n169 + n170 + n171 + n172 + n173 + n174 + n176 + n11*n148*n38*n40*xF[1]/n107 + n38*n49*xF[6]*(pow(alpha, NP0*n0 - n78*n9)*n53*n66*n9/n73 - pow(alpha, n0*n14 - n78*n9)*n18*n24*n43/(n42*n74) + pow(alpha, n0*n14 - n78*n9)*n43*n53*n9/(n42*n74) + n71)/n105 + n72*(pow(alpha, NP0*n0 - n78*n8)*n53*n66*n8/n73 - pow(alpha, n0*n14 - n78*n8)*n18*n23*n43/(n42*n74) + pow(alpha, n0*n14 - n78*n8)*n43*n53*n8/(n42*n74) + n18*n23*n35)/n104 + n38*n65*(pow(alpha, NP0*n0 - n7*n78)*n53*n66*n7/n73 - pow(alpha, n0*n14 - n7*n78)*n18*n22*n43/(n42*n74) + pow(alpha, n0*n14 - n7*n78)*n43*n53*n7/(n42*n74) + n68)/n103 + n38*n50*xF[2]*(pow(alpha, NP0*n0 - n5*n78)*n5*n53*n66/n73 - pow(alpha, n0*n14 - n5*n78)*n18*n20*n43/(n42*n74) + pow(alpha, n0*n14 - n5*n78)*n43*n5*n53/(n42*n74) + n67)/n101 + n38*n64*(pow(alpha, NP0*n0 - n4*n78)*n4*n53*n66/n73 - pow(alpha, n0*n14 - n4*n78)*n18*n19*n43/(n42*n74) + pow(alpha, n0*n14 - n4*n78)*n4*n43*n53/(n42*n74) + n18*n19*n31)/n100) - 0.5*n38*n39*xF[0]*(pow(alpha, NP0*n0 - n0*n78)*n61*n66/n73 + n69)/n99) - n38*xTj*(n1*n113*n56 + n1*n114*n54 + n1*n115*n58 + n117*n60*xF[0] + n119*n55 + n120*n59 + n121*n57 + n125*n143 + n16*n39*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)/n99 + n160*n63 + n161*n64 + n163*n49 + n158/n103 + n154*n50/n101);
17813  NP_2a = -n38*(-1.0*n126 - 2.0*n139*n41*n61*xF[0]/n99 + n159*n69 + 1.0*xTj*(n1*n11*n16*n60*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)/n99 + n11*n118*n157 + n11*n123*n147 + n11*n124*n150 + n11*n165 + n11*n152*n47*xF[5]/n111 + n11*n151*n46*xF[4]/n110 + n113*n71 + n114*n67 + n115*n68 + n116*n70 + n125*(-pow(alpha, n0*n14 - n6*n78)*n18*n21*n43/(n42*n74) + pow(alpha, n0*n14 - n6*n78)*n43*n53*n6/(n42*n74) + n53*n76*n88 + n70) + n126 + n127 + n128 + n16*n39*(pow(alpha, NP0*n0 - n0*n78)*n61*n66/n73 + n69)/n99 + n11*n148*n40*xF[1]/n107 + n26*n56*xF[6]*(pow(alpha, NP0*n0 - n78*n9)*n1*n66*n9/n73 + n1*n56)/n105 + n49*xF[6]*(-pow(alpha, n0*n14 - n78*n9)*n18*n24*n43/(n42*n74) + pow(alpha, n0*n14 - n78*n9)*n43*n53*n9/(n42*n74) + n53*n76*n89 + n71)/n105 + n26*n55*xF[5]*(pow(alpha, NP0*n0 - n78*n8)*n1*n66*n8/n73 + n1*n55)/n104 + n63*(-pow(alpha, n0*n14 - n78*n8)*n18*n23*n43/(n42*n74) + pow(alpha, n0*n14 - n78*n8)*n43*n53*n8/(n42*n74) + n18*n23*n35 + n53*n76*n90)/n104 + n26*n58*xF[4]*(pow(alpha, NP0*n0 - n7*n78)*n1*n66*n7/n73 + n1*n58)/n103 + n65*(-pow(alpha, n0*n14 - n7*n78)*n18*n22*n43/(n42*n74) + pow(alpha, n0*n14 - n7*n78)*n43*n53*n7/(n42*n74) + n53*n76*n87 + n68)/n103 + n26*n57*xF[3]*(pow(alpha, NP0*n0 - n6*n78)*n1*n6*n66/n73 + n1*n57)/n102 + n26*n54*xF[2]*(pow(alpha, NP0*n0 - n5*n78)*n1*n5*n66/n73 + n1*n54)/n101 + n50*xF[2]*(-pow(alpha, n0*n14 - n5*n78)*n18*n20*n43/(n42*n74) + pow(alpha, n0*n14 - n5*n78)*n43*n5*n53/(n42*n74) + n53*n76*n91 + n67)/n101 + n26*n59*xF[1]*(pow(alpha, NP0*n0 - n4*n78)*n1*n4*n66/n73 + n1*n59)/n100 + n64*(-pow(alpha, n0*n14 - n4*n78)*n18*n19*n43/(n42*n74) + pow(alpha, n0*n14 - n4*n78)*n4*n43*n53/(n42*n74) + n18*n19*n31 + n53*n76*n86)/n100) + n11*pow(n139, -n11)*n16*n39*n41*n61/n106);
17814  NP_sqrt_base = (NP0*(n178 - n192) + n122*n38*xF[0] + xTj*(n113*n38*n49 + n114*n38*n50 - n116*n38*n45 + n122*n16*n38 + n38*n64/n93 + n38*n65/n96 + n72/n97) + pow(NP0, -n11)*(-1.0*n1*n164*n38*n60 + 0.5*n123*n140*n155*n38 - 0.5*n131 + 0.5*n166*n38*xF[0] + 0.5*n194*xTj))*(4.0*n1*n164*n38*n60 - n11*n176 + n11*n194*xTj - 4.0*n123*n147*n38 + 2.0*n131) + pow(-n130 - n14*(1.0*n1*n38*n60*xF[0]*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)/n99 - 0.5*n123*n38*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)*(pow(alpha, NP0*n0 - n0*n78)*n0*n26*n66/n73 + n26*n60) + n138 + n27*(n118*n38*n49*(pow(alpha, NP0*n0 - n78*n9)*n1*n66*n9/n73 + n1*n56)*(pow(alpha, NP0*n0 - n78*n9)*n26*n66*n9/n73 + n26*n56) - n124*n38*(pow(alpha, NP0*n0 - n6*n78)*n1*n6*n66/n73 + n1*n57)*(pow(alpha, NP0*n0 - n6*n78)*n26*n6*n66/n73 + n26*n57) + n125*n38*(pow(alpha, NP0*n0 - n6*n78)*n53*n6*n66/n73 - pow(alpha, n0*n14 - n6*n78)*n18*n21*n43/(n42*n74) + pow(alpha, n0*n14 - n6*n78)*n43*n53*n6/(n42*n74) + n70) + n131 + n132 + n133 + n134 + n135 + n136 + n137 + n168 + n169 + n170 + n171 + n172 + n173 + n174 + n176 + n72*(pow(alpha, NP0*n0 - n78*n8)*n1*n66*n8/n73 + n1*n55)*(pow(alpha, NP0*n0 - n78*n8)*n26*n66*n8/n73 + n26*n55)/n111 + n38*n65*(pow(alpha, NP0*n0 - n7*n78)*n1*n66*n7/n73 + n1*n58)*(pow(alpha, NP0*n0 - n7*n78)*n26*n66*n7/n73 + n26*n58)/n110 + n38*n50*xF[2]*(pow(alpha, NP0*n0 - n5*n78)*n1*n5*n66/n73 + n1*n54)*(pow(alpha, NP0*n0 - n5*n78)*n26*n5*n66/n73 + n26*n54)/n108 + n38*n64*(pow(alpha, NP0*n0 - n4*n78)*n1*n4*n66/n73 + n1*n59)*(pow(alpha, NP0*n0 - n4*n78)*n26*n4*n66/n73 + n26*n59)/n107 + n16*n38*n39*(pow(alpha, NP0*n0 - n0*n78)*n0*n1*n66/n73 + n1*n60)*(pow(alpha, NP0*n0 - n0*n78)*n0*n26*n66/n73 + n26*n60)/n106 + n38*n49*xF[6]*(pow(alpha, NP0*n0 - n78*n9)*n53*n66*n9/n73 - pow(alpha, n0*n14 - n78*n9)*n18*n24*n43/(n42*n74) + pow(alpha, n0*n14 - n78*n9)*n43*n53*n9/(n42*n74) + n71)/n105 + n72*(pow(alpha, NP0*n0 - n78*n8)*n53*n66*n8/n73 - pow(alpha, n0*n14 - n78*n8)*n18*n23*n43/(n42*n74) + pow(alpha, n0*n14 - n78*n8)*n43*n53*n8/(n42*n74) + n18*n23*n35)/n104 + n38*n65*(pow(alpha, NP0*n0 - n7*n78)*n53*n66*n7/n73 - pow(alpha, n0*n14 - n7*n78)*n18*n22*n43/(n42*n74) + pow(alpha, n0*n14 - n7*n78)*n43*n53*n7/(n42*n74) + n68)/n103 + n38*n50*xF[2]*(pow(alpha, NP0*n0 - n5*n78)*n5*n53*n66/n73 - pow(alpha, n0*n14 - n5*n78)*n18*n20*n43/(n42*n74) + pow(alpha, n0*n14 - n5*n78)*n43*n5*n53/(n42*n74) + n67)/n101 + n38*n64*(pow(alpha, NP0*n0 - n4*n78)*n4*n53*n66/n73 - pow(alpha, n0*n14 - n4*n78)*n18*n19*n43/(n42*n74) + pow(alpha, n0*n14 - n4*n78)*n4*n43*n53/(n42*n74) + n18*n19*n31)/n100) - 0.5*n38*n39*xF[0]*(pow(alpha, NP0*n0 - n0*n78)*n61*n66/n73 + n69)/n99) - n164*n38*n39 - n192, -n11);
17815  NP_sqrt_base = fabs(NP_sqrt_base);
17816  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
17817  NT1 = n52*(n75 - log(-pow(alpha, NP1*n0)*n66 + 1));
17818  g0 = MW[1] - Mstar;
17819  g1 = MW[0] - Mstar;
17820  g2 = NT1 + 1;
17821  g3 = xPj - xTj;
17822  g4 = MW[2] - Mstar;
17823  g5 = MW[3] - Mstar;
17824  g6 = MW[4] - Mstar;
17825  g7 = MW[5] - Mstar;
17826  g8 = MW[6] - Mstar;
17827  g9 = xF[0] - xTj;
17828  g10 = xF[0] - xPj;
17829  g11 = -xTj;
17830  g12 = xPj/xF[1];
17831  g13 = pow(alpha, -g1);
17832  g14 = pow(alpha, -g0);
17833  g15 = pow(alpha, -g4);
17834  g16 = pow(alpha, -g5);
17835  g17 = pow(alpha, -g6);
17836  g18 = pow(alpha, -g7);
17837  g19 = pow(alpha, -g8);
17838  g20 = log(xF[0]/xF[1]);
17839  g21 = -g2;
17840  g22 = pow(alpha, NP1*g0);
17841  g23 = pow(alpha, NP1*g1);
17842  g24 = log(g13);
17843  g25 = pow(alpha, NP1*g4);
17844  g26 = pow(alpha, NP1*g5);
17845  g27 = pow(alpha, NP1*g6);
17846  g28 = pow(alpha, NP1*g7);
17847  g29 = pow(alpha, NP1*g8);
17848  g30 = -g20;
17849  g31 = g9/g3;
17850  g32 = g3/g9;
17851  g33 = -g22 + 1;
17852  g34 = -g22 + 1;
17853  g35 = -g23 + 1;
17854  g36 = -g25 + 1;
17855  g37 = -g26 + 1;
17856  g38 = -g27 + 1;
17857  g39 = -g28 + 1;
17858  g40 = -g29 + 1;
17859  g41 = -g23;
17860  g42 = -g25;
17861  g43 = -g26;
17862  g44 = -g27;
17863  g45 = -g28;
17864  g46 = -g29;
17865  g47 = -1.0*g20;
17866  g48 = -g3/g10;
17867  g49 = g10/(g3*xF[1]);
17868  g50 = pow(alpha, g0*g21) - 1;
17869  g51 = pow(alpha, g0*g21) - 1;
17870  g52 = pow(alpha, g1*g21) - 1;
17871  g53 = pow(alpha, g21*g4) - 1;
17872  g54 = pow(alpha, g21*g5) - 1;
17873  g55 = pow(alpha, g21*g6) - 1;
17874  g56 = pow(alpha, g21*g7) - 1;
17875  g57 = pow(alpha, g21*g8) - 1;
17876  g58 = -pow(alpha, g1*g21);
17877  g59 = -pow(alpha, g21*g4);
17878  g60 = -pow(alpha, g21*g5);
17879  g61 = -pow(alpha, g21*g6);
17880  g62 = -pow(alpha, g21*g7);
17881  g63 = -pow(alpha, g21*g8);
17882  g64 = g34 + g51;
17883  g65 = -g23 - g58;
17884  g66 = -g25 - g59;
17885  g67 = -g26 - g60;
17886  g68 = -g27 - g61;
17887  g69 = -g28 - g62;
17888  g70 = -g29 - g63;
17889  g71 = pow(alpha, g1*g21) + g41;
17890  g72 = g34 + g51;
17891  g73 = pow(alpha, g21*g4) + g42;
17892  g74 = pow(alpha, g21*g5) + g43;
17893  g75 = pow(alpha, g21*g6) + g44;
17894  g76 = pow(alpha, g21*g7) + g45;
17895  g77 = pow(alpha, g21*g8) + g46;
17896  g78 = xF[0]/g71;
17897  g79 = xF[1]/g72;
17898  g80 = xF[2]/g73;
17899  g81 = xF[3]/g74;
17900  g82 = xF[6]/g77;
17901  g83 = xF[4]/g75;
17902  g84 = xF[5]/g76;
17903  g85 = xF[1]/g64;
17904  g86 = xF[0]/g65;
17905  g87 = xF[4]/g68;
17906  g88 = xF[5]/g69;
17907  g89 = xF[2]/g66;
17908  g90 = xF[6]/g70;
17909  g91 = xF[3]/g67;
17910  g92 = g40/g70;
17911  g93 = g38/g68;
17912  g94 = g35/g65;
17913  g95 = g39/g69;
17914  g96 = g37/g67;
17915  g97 = g33/g64;
17916  g98 = g36/g66;
17917  g99 = g50/g64;
17918  g100 = g52/g65;
17919  g101 = g56/g69;
17920  g102 = g53/g66;
17921  g103 = g54/g67;
17922  g104 = g55/g68;
17923  g105 = g57/g70;
17924  g106 = log(g11*g49*g72/g34);
17925  g107 = log(g11*g49*g64/g33);
17926  g108 = log(g12*g31*g72/g51);
17927  g109 = 1.0*g106;
17928  g110 = log(g12*g31*g64/g50);
17929  g111 = 1.0*g108;
17930  g112 = -g109*g34*g79 - g109*g78*(g41 + 1) - g109*g80*(g42 + 1) - g109*g81*(g43 + 1) - g109*g82*(g46 + 1) - g109*g83*(g44 + 1) - g109*g84*(g45 + 1) - g111*g51*g79 - g111*g78*(pow(alpha, g1*g21) - 1) - g111*g80*(pow(alpha, g21*g4) - 1) - g111*g81*(pow(alpha, g21*g5) - 1) - g111*g82*(pow(alpha, g21*g8) - 1) - g111*g83*(pow(alpha, g21*g6) - 1) - g111*g84*(pow(alpha, g21*g7) - 1) - g47*xF[0] - g47*xF[1] - g47*xF[2] - g47*xF[3] - g47*xF[4] - g47*xF[5] - g47*xF[6];
17931  LpF = xF[0]*(g13 + 1.0)*(g100*g110 + g107*g94 + g30)/(g24*(g13 - 1.0)) + xF[1]*(g14 + 1.0)*(g107*g97 + g110*g99 + g30)/(g24*(g14 - 1.0)) + xF[2]*(g15 + 1.0)*(g102*g110 + g107*g98 + g30)/(g24*(g15 - 1.0)) + xF[3]*(g16 + 1.0)*(g103*g110 + g107*g96 + g30)/(g24*(g16 - 1.0)) + xF[4]*(g17 + 1.0)*(g104*g110 + g107*g93 + g30)/(g24*(g17 - 1.0)) + xF[5]*(g18 + 1.0)*(g101*g110 + g107*g95 + g30)/(g24*(g18 - 1.0)) + xF[6]*(g19 + 1.0)*(g105*g110 + g107*g92 + g30)/(g24*(g19 - 1.0));
17932  PpF = g31;
17933  TpF = -g10/g3;
17934  SWUpF = g112;
17935  SWUpP = g112*g32;
17936  xP[0] = g32*g52*g86;
17937  xP[1] = g32*g50*g85;
17938  xP[2] = g32*g53*g89;
17939  xP[3] = g32*g54*g91;
17940  xP[4] = g32*g55*g87;
17941  xP[5] = g32*g56*g88;
17942  xP[6] = g32*g57*g90;
17943  xT[0] = g35*g48*g86;
17944  xT[1] = g33*g48*g85;
17945  xT[2] = g36*g48*g89;
17946  xT[3] = g37*g48*g91;
17947  xT[4] = g38*g48*g87;
17948  xT[5] = g39*g48*g88;
17949  xT[6] = g40*g48*g90;
17950  break;
17951  case 8:
17952  n0 = -0.500000000000000;
17953  n1 = -2.00000000000000;
17954  n2 = MW[0] - Mstar;
17955  n3 = log(alpha);
17956  n4 = xPj - xTj;
17957  n5 = xF[0] - xPj;
17958  n6 = MW[1] - Mstar;
17959  n7 = MW[2] - Mstar;
17960  n8 = MW[3] - Mstar;
17961  n9 = MW[4] - Mstar;
17962  n10 = MW[5] - Mstar;
17963  n11 = MW[6] - Mstar;
17964  n12 = MW[7] - Mstar;
17965  n13 = log(xTj);
17966  n14 = -2;
17967  n15 = xF[0]*xPj;
17968  n16 = -Mstar;
17969  n17 = -xPj;
17970  n18 = -NP0*n1;
17971  n19 = -xTj;
17972  n20 = pow(n2, -n1);
17973  n21 = pow(n3, -n1);
17974  n22 = pow(n6, -n1);
17975  n23 = pow(n7, -n1);
17976  n24 = pow(n8, -n1);
17977  n25 = pow(n9, -n1);
17978  n26 = pow(n10, -n1);
17979  n27 = pow(n11, -n1);
17980  n28 = pow(n12, -n1);
17981  n29 = Mstar*n3;
17982  n30 = -n1*n3;
17983  n31 = pow(alpha, NP0*n2);
17984  n32 = n15 + n19*xF[0];
17985  n33 = n15 + n17*xTj;
17986  n34 = pow(alpha, NP0*n6);
17987  n35 = pow(alpha, NP0*n7);
17988  n36 = pow(alpha, NP0*n8);
17989  n37 = pow(alpha, NP0*n9);
17990  n38 = pow(alpha, NP0*n10);
17991  n39 = pow(alpha, NP0*n11);
17992  n40 = pow(alpha, NP0*n12);
17993  n41 = -MW[0]*n3;
17994  n42 = n4/n5;
17995  n43 = -n31 + 1;
17996  n44 = -n34 + 1;
17997  n45 = pow(alpha, n18*n2);
17998  n46 = pow(n33, -n1);
17999  n47 = -n35 + 1;
18000  n48 = -n36 + 1;
18001  n49 = -n37 + 1;
18002  n50 = -n38 + 1;
18003  n51 = -n39 + 1;
18004  n52 = -n40 + 1;
18005  n53 = -n31;
18006  n54 = -n34;
18007  n55 = -n35;
18008  n56 = -n36;
18009  n57 = -n37;
18010  n58 = -n38;
18011  n59 = -n39;
18012  n60 = -n40;
18013  n61 = n2*n21;
18014  n62 = 1/(n2*n3);
18015  n63 = n47*xF[2];
18016  n64 = n35*n7;
18017  n65 = n10*n38;
18018  n66 = n44*xF[1];
18019  n67 = n49*xF[4];
18020  n68 = n51*xF[6];
18021  n69 = n11*n39;
18022  n70 = n36*n8;
18023  n71 = n34*n6;
18024  n72 = n37*n9;
18025  n73 = n12*n40;
18026  n74 = n20*n21;
18027  n75 = log((-1.0 + xPj/xF[0])/n4);
18028  n76 = -n50*xF[5];
18029  n77 = n2*n3*n31;
18030  n78 = n3*n73;
18031  n79 = n33/n32;
18032  n80 = n21*n23*n35;
18033  n81 = n21*n25*n37;
18034  n82 = n21*n26*n38;
18035  n83 = n31*n74;
18036  n84 = n21*n28*n40;
18037  n85 = n21*n24*n36;
18038  n86 = n21*n27*n39;
18039  n87 = n21*n22*n34;
18040  n88 = n53*n79 + 1;
18041  n89 = n13 + n29 + n41 + n75;
18042  n90 = n31*n79/n88;
18043  n91 = n21*pow(n32, n14)*n45*n46*pow(n88, n14);
18044  n92 = n62*(n89 - log(n88)) + 1;
18045  n93 = pow(alpha, n2*n92);
18046  n94 = pow(alpha, n6*n92);
18047  n95 = pow(alpha, n7*n92);
18048  n96 = pow(alpha, n8*n92);
18049  n97 = pow(alpha, n9*n92);
18050  n98 = pow(alpha, n10*n92);
18051  n99 = pow(alpha, n11*n92);
18052  n100 = pow(alpha, n12*n92);
18053  n101 = n6/n94;
18054  n102 = n9/n97;
18055  n103 = n8/n96;
18056  n104 = n12/n100;
18057  n105 = n11/n99;
18058  n106 = n10/n98;
18059  n107 = n2/n93;
18060  n108 = n7/n95;
18061  n109 = n43 - 1 + 1.0/n93;
18062  n110 = n44 - 1 + 1.0/n94;
18063  n111 = n47 - 1 + 1.0/n95;
18064  n112 = n48 - 1 + 1.0/n96;
18065  n113 = n49 - 1 + 1.0/n97;
18066  n114 = n50 - 1 + 1.0/n98;
18067  n115 = n51 - 1 + 1.0/n99;
18068  n116 = n52 - 1 + 1.0/n100;
18069  n117 = pow(n109, 3);
18070  n118 = pow(n110, 3);
18071  n119 = pow(n111, 3);
18072  n120 = pow(n112, 3);
18073  n121 = pow(n113, 3);
18074  n122 = pow(n114, 3);
18075  n123 = pow(n115, 3);
18076  n124 = pow(n116, 3);
18077  n125 = xF[6]/n115;
18078  n126 = xF[7]/n116;
18079  n127 = xF[1]/n110;
18080  n128 = xF[2]/n111;
18081  n129 = xF[0]/n109;
18082  n130 = xF[5]/n114;
18083  n131 = xF[4]/n113;
18084  n132 = xF[3]/n112;
18085  n133 = pow(n109, n14)*xF[0];
18086  n134 = n130*n3;
18087  n135 = -pow(n110, n14);
18088  n136 = n132*n3;
18089  n137 = n43*xF[0]/n117;
18090  n138 = n52*xF[7]/n124;
18091  n139 = pow(n116, n14)*n52*xF[7];
18092  n140 = -pow(n112, n14)*n48*xF[3];
18093  n141 = n129*n83;
18094  n142 = n129*n2*n3*n42*n53;
18095  n143 = n141*n42;
18096  n144 = n127*n42*n87;
18097  n145 = n128*n42*n80;
18098  n146 = n132*n42*n85;
18099  n147 = n131*n42*n81;
18100  n148 = n130*n42*n82;
18101  n149 = n125*n42*n86;
18102  n150 = n126*n42*n84;
18103  n151 = n0*n129*n42*n53*n74;
18104  n152 = n79/(n88*n93) + 1;
18105  n153 = n152*n43;
18106  n154 = n77*n79/(n88*n93) + n77;
18107  n155 = n101*n3*n90 + n3*n71;
18108  n156 = n108*n3*n90 + n3*n64;
18109  n157 = n103*n3*n90 + n3*n70;
18110  n158 = n102*n3*n90 + n3*n72;
18111  n159 = n106*n3*n90 + n3*n65;
18112  n160 = n105*n3*n90 + n3*n69;
18113  n161 = n104*n3*n90 + n78;
18114  n162 = pow(n154, -n1);
18115  n163 = pow(n155, -n1);
18116  n164 = pow(n156, -n1);
18117  n165 = pow(n157, -n1);
18118  n166 = pow(n158, -n1);
18119  n167 = pow(n159, -n1);
18120  n168 = pow(n160, -n1);
18121  n169 = pow(n161, -n1);
18122  n170 = n157*xF[3];
18123  n171 = n107*n30*n90 + n2*n30*n31;
18124  n172 = n79*n83/(n88*n93) + n83;
18125  n173 = -n158*n67;
18126  n174 = n172*n43;
18127  n175 = pow(n114, n14)*n159;
18128  n176 = pow(n111, n14)*n156;
18129  n177 = pow(n115, n14)*n160;
18130  n178 = n166/n121;
18131  n179 = n168/n123;
18132  n180 = pow(n113, n14)*n158*xF[4];
18133  n181 = n164/n119;
18134  n182 = pow(n110, n14)*n155*xF[1];
18135  n183 = n163/n118;
18136  n184 = pow(n116, n14)*n161*xF[7];
18137  n185 = n165*n48*xF[3]/n120;
18138  n186 = n133*n154*n42*n43;
18139  n187 = n133*n2*n30*n31*n42*(pow(alpha, NP0*n2 - n2*n92)*n2*n3*n79/n88 + n77);
18140  n188 = pow(n110, n14)*n30*n42*n71*xF[1]*(pow(alpha, NP0*n2 - n6*n92)*n3*n6*n79/n88 + n3*n71);
18141  n189 = pow(n111, n14)*n30*n42*n64*xF[2]*(pow(alpha, NP0*n2 - n7*n92)*n3*n7*n79/n88 + n3*n64);
18142  n190 = pow(n112, n14)*n30*n42*n70*xF[3]*(pow(alpha, NP0*n2 - n8*n92)*n3*n79*n8/n88 + n3*n70);
18143  n191 = pow(n113, n14)*n30*n42*n72*xF[4]*(pow(alpha, NP0*n2 - n9*n92)*n3*n79*n9/n88 + n3*n72);
18144  n192 = pow(n114, n14)*n30*n42*n65*xF[5]*(pow(alpha, NP0*n2 - n10*n92)*n10*n3*n79/n88 + n3*n65);
18145  n193 = pow(n115, n14)*n30*n42*n69*xF[6]*(pow(alpha, NP0*n2 - n11*n92)*n11*n3*n79/n88 + n3*n69);
18146  n194 = pow(n116, n14)*n30*n42*n73*xF[7]*(pow(alpha, NP0*n2 - n12*n92)*n12*n3*n79/n88 + n78);
18147  n195 = 1.0*n133*n154*n42*n77;
18148  n196 = -n133*n174*n42;
18149  n197 = n0*n133*n174*n42;
18150  n198 = n154*n171;
18151  n199 = n108*pow(n32, n14)*n45*n46*n61*pow(n88, n14) + n108*n61*n90 - n23*n91/n95 + n80;
18152  n200 = n102*pow(n32, n14)*n45*n46*n61*pow(n88, n14) + n102*n61*n90 - n25*n91/n97 + n81;
18153  n201 = n106*pow(n32, n14)*n45*n46*n61*pow(n88, n14) + n106*n61*n90 - n26*n91/n98 + n82;
18154  n202 = n105*pow(n32, n14)*n45*n46*n61*pow(n88, n14) + n105*n61*n90 - n27*n91/n99 + n86;
18155  n203 = n135*n42*n66*(-pow(alpha, n18*n2 - n6*n92)*n21*n22*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n6*n92)*pow(n32, n14)*n46*n6*n61*pow(n88, n14) + n101*n61*n90 + n87);
18156  n204 = -pow(n111, n14)*n42*n63*(-pow(alpha, n18*n2 - n7*n92)*n21*n23*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n7*n92)*pow(n32, n14)*n46*n61*n7*pow(n88, n14) + n108*n61*n90 + n80);
18157  n205 = n140*n42*(-pow(alpha, n18*n2 - n8*n92)*n21*n24*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n8*n92)*pow(n32, n14)*n46*n61*n8*pow(n88, n14) + n103*n61*n90 + n85);
18158  n206 = -pow(n113, n14)*n42*n67*(-pow(alpha, n18*n2 - n9*n92)*n21*n25*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n9*n92)*pow(n32, n14)*n46*n61*pow(n88, n14)*n9 + n102*n61*n90 + n81);
18159  n207 = pow(n114, n14)*n42*n76*(pow(alpha, -n10*n92 + n18*n2)*n10*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n10*n92 + n18*n2)*n21*n26*pow(n32, n14)*n46*pow(n88, n14) + n106*n61*n90 + n82);
18160  n208 = -pow(n115, n14)*n42*n68*(pow(alpha, -n11*n92 + n18*n2)*n11*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n11*n92 + n18*n2)*n21*n27*pow(n32, n14)*n46*pow(n88, n14) + n105*n61*n90 + n86);
18161  n209 = -n139*n42*(pow(alpha, -n12*n92 + n18*n2)*n12*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n12*n92 + n18*n2)*n21*n28*pow(n32, n14)*n46*pow(n88, n14) + n104*n61*n90 + n84);
18162  n210 = n151 + n195 + n197;
18163  n211 = xTj*(pow(n113, n14)*n173*n42 + n125*n3*n42*n69 + n126*n42*n78 + n127*n3*n42*n71 + n128*n3*n42*n64 + n129*n42*n77 + n131*n3*n42*n72 + n134*n42*n65 + n135*n155*n42*n66 + n136*n42*n70 - n139*n161*n42 + n140*n157*n42 + n175*n42*n76 - n176*n42*n63 - n177*n42*n68 - n186);
18164  n212 = n142 + n186 + n211;
18165  n213 = n143 + n144 + n145 + n146 + n147 + n148 + n149 + n150 + n187 + n188 + n189 + n190 + n191 + n192 + n193 + n194 + n196 + n203 + n204 + n205 + n206 + n207 + n208 + n209;
18166  NP_b = -n133*n153*n42*n77 - n142 - n18*(n0*n133*n42*n43*(pow(alpha, NP0*n2 - n2*n92)*n74*n79/n88 + n83) + n0*xTj*(-pow(n111, n14)*n42*n63*(pow(alpha, NP0*n2 - n7*n92)*n61*n7*n79/n88 - pow(alpha, n18*n2 - n7*n92)*n21*n23*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n7*n92)*pow(n32, n14)*n46*n61*n7*pow(n88, n14) + n80) - pow(n113, n14)*n42*n67*(pow(alpha, NP0*n2 - n9*n92)*n61*n79*n9/n88 - pow(alpha, n18*n2 - n9*n92)*n21*n25*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n9*n92)*pow(n32, n14)*n46*n61*pow(n88, n14)*n9 + n81) + pow(n114, n14)*n42*n76*(pow(alpha, NP0*n2 - n10*n92)*n10*n61*n79/n88 + pow(alpha, -n10*n92 + n18*n2)*n10*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n10*n92 + n18*n2)*n21*n26*pow(n32, n14)*n46*pow(n88, n14) + n82) - pow(n115, n14)*n42*n68*(pow(alpha, NP0*n2 - n11*n92)*n11*n61*n79/n88 + pow(alpha, -n11*n92 + n18*n2)*n11*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n11*n92 + n18*n2)*n21*n27*pow(n32, n14)*n46*pow(n88, n14) + n86) - n133*n42*n43*(pow(alpha, NP0*n2 - n2*n92)*n74*n79/n88 + n83) + n135*n42*n66*(pow(alpha, NP0*n2 - n6*n92)*n6*n61*n79/n88 - pow(alpha, n18*n2 - n6*n92)*n21*n22*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n6*n92)*pow(n32, n14)*n46*n6*n61*pow(n88, n14) + n87) + n137*n14*n162*n42 + n138*n14*n169*n42 - n139*n42*(pow(alpha, NP0*n2 - n12*n92)*n12*n61*n79/n88 + pow(alpha, -n12*n92 + n18*n2)*n12*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n12*n92 + n18*n2)*n21*n28*pow(n32, n14)*n46*pow(n88, n14) + n84) + n14*n178*n42*n67 + n14*n179*n42*n68 + n14*n181*n42*n63 + n14*n183*n42*n66 + n14*n185*n42 + n140*n42*(pow(alpha, NP0*n2 - n8*n92)*n61*n79*n8/n88 - pow(alpha, n18*n2 - n8*n92)*n21*n24*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n8*n92)*pow(n32, n14)*n46*n61*n8*pow(n88, n14) + n85) + n143 + n144 + n145 + n146 + n147 + n148 + n149 + n150 + n187 + n188 + n189 + n190 + n191 + n192 + n193 + n194 + n14*n167*n42*n50*xF[5]/n122) + 1.0*n133*n42*n77*(pow(alpha, NP0*n2 - n2*n92)*n2*n3*n79/n88 + n77) - 1.0*n137*n162*n42 + n151) - n42*xTj*(pow(n113, n14)*n173 + n125*n3*n69 + n126*n78 + n127*n3*n71 + n128*n3*n64 + n129*n77 + n131*n3*n72 - n133*n154*n43 + n134*n65 + n135*n155*n66 + n136*n70 - n139*n161 + n140*n157 + n175*n76 - n176*n63 - n177*n68);
18167  NP_2a = -n42*(n1*n133*n152*n45*n74 - n1*n137*pow(n152, -n1)*n45*n74 + n133*n153*n83 - 1.0*n141 + 1.0*xTj*(pow(n110, n14)*n30*n71*xF[1]*(pow(alpha, NP0*n2 - n6*n92)*n3*n6*n79/n88 + n3*n71) + pow(n111, n14)*n30*n64*xF[2]*(pow(alpha, NP0*n2 - n7*n92)*n3*n7*n79/n88 + n3*n64) - pow(n111, n14)*n63*(-pow(alpha, n18*n2 - n7*n92)*n21*n23*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n7*n92)*pow(n32, n14)*n46*n61*n7*pow(n88, n14) + n108*n61*n90 + n80) + pow(n112, n14)*n30*n70*xF[3]*(pow(alpha, NP0*n2 - n8*n92)*n3*n79*n8/n88 + n3*n70) + pow(n113, n14)*n30*n72*xF[4]*(pow(alpha, NP0*n2 - n9*n92)*n3*n79*n9/n88 + n3*n72) - pow(n113, n14)*n67*(-pow(alpha, n18*n2 - n9*n92)*n21*n25*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n9*n92)*pow(n32, n14)*n46*n61*pow(n88, n14)*n9 + n102*n61*n90 + n81) + pow(n114, n14)*n30*n65*xF[5]*(pow(alpha, NP0*n2 - n10*n92)*n10*n3*n79/n88 + n3*n65) + pow(n114, n14)*n76*(pow(alpha, -n10*n92 + n18*n2)*n10*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n10*n92 + n18*n2)*n21*n26*pow(n32, n14)*n46*pow(n88, n14) + n106*n61*n90 + n82) + pow(n115, n14)*n30*n69*xF[6]*(pow(alpha, NP0*n2 - n11*n92)*n11*n3*n79/n88 + n3*n69) - pow(n115, n14)*n68*(pow(alpha, -n11*n92 + n18*n2)*n11*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n11*n92 + n18*n2)*n21*n27*pow(n32, n14)*n46*pow(n88, n14) + n105*n61*n90 + n86) + pow(n116, n14)*n30*n73*xF[7]*(pow(alpha, NP0*n2 - n12*n92)*n12*n3*n79/n88 + n78) + n125*n86 + n126*n84 + n127*n87 + n128*n80 + n130*n82 + n131*n81 + n132*n85 - n133*n174 + n133*n2*n30*n31*(pow(alpha, NP0*n2 - n2*n92)*n2*n3*n79/n88 + n77) + n135*n66*(-pow(alpha, n18*n2 - n6*n92)*n21*n22*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n6*n92)*pow(n32, n14)*n46*n6*n61*pow(n88, n14) + n101*n61*n90 + n87) + n137*n14*n162 + n138*n14*n169 - n139*(pow(alpha, -n12*n92 + n18*n2)*n12*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n12*n92 + n18*n2)*n21*n28*pow(n32, n14)*n46*pow(n88, n14) + n104*n61*n90 + n84) + n14*n178*n67 + n14*n179*n68 + n14*n181*n63 + n14*n183*n66 + n14*n185 + n140*(-pow(alpha, n18*n2 - n8*n92)*n21*n24*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n8*n92)*pow(n32, n14)*n46*n61*n8*pow(n88, n14) + n103*n61*n90 + n85) + n141 + n14*n167*n50*xF[5]/n122));
18168  NP_sqrt_base = (-NP0*n212 - n19*(-n42*n43*xF[0]/(n43 - 1 + pow(alpha, -n2*(n62*(n89 - log(n33*n53/(n15 - xF[0]*xTj) + 1)) + 1))) - n42*n48*xF[3]/(n48 - 1 + pow(alpha, -n8*(n62*(n89 - log(n33*n53/(n15 - xF[0]*xTj) + 1)) + 1))) - n42*n50*xF[5]/(n50 - 1 + pow(alpha, -n10*(n62*(n89 - log(n33*n53/(n15 - xF[0]*xTj) + 1)) + 1))) - n42*n52*xF[7]/(n52 - 1 + pow(alpha, -n12*(n62*(n89 - log(n33*n53/(n15 - xF[0]*xTj) + 1)) + 1))) - n42*n63/(n47 - 1 + pow(alpha, -n7*(n62*(n89 - log(n33*n53/(n15 - xF[0]*xTj) + 1)) + 1))) - n42*n66/(n44 - 1 + pow(alpha, -n6*(n62*(n89 - log(n33*n53/(n15 - xF[0]*xTj) + 1)) + 1))) - n42*n67/(n49 - 1 + pow(alpha, -n9*(n62*(n89 - log(n33*n53/(n15 - xF[0]*xTj) + 1)) + 1))) - n42*n68/(n51 - 1 + pow(alpha, -n11*(n62*(n89 - log(n33*n53/(n15 - xF[0]*xTj) + 1)) + 1)))) + n42*n43*xF[0]/n109 - pow(NP0, -n1)*(n0*n137*n198*n42 - n0*n143 - n0*n19*(-pow(n111, n14)*n42*n63*(pow(alpha, NP0*n2 - n7*n92)*n61*n7*n79/n88 - pow(alpha, n18*n2 - n7*n92)*n21*n23*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n7*n92)*pow(n32, n14)*n46*n61*n7*pow(n88, n14) + n80) - pow(n113, n14)*n42*n67*(pow(alpha, NP0*n2 - n9*n92)*n61*n79*n9/n88 - pow(alpha, n18*n2 - n9*n92)*n21*n25*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n9*n92)*pow(n32, n14)*n46*n61*pow(n88, n14)*n9 + n81) + pow(n114, n14)*n42*n76*(pow(alpha, NP0*n2 - n10*n92)*n10*n61*n79/n88 + pow(alpha, -n10*n92 + n18*n2)*n10*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n10*n92 + n18*n2)*n21*n26*pow(n32, n14)*n46*pow(n88, n14) + n82) - pow(n115, n14)*n42*n68*(pow(alpha, NP0*n2 - n11*n92)*n11*n61*n79/n88 + pow(alpha, -n11*n92 + n18*n2)*n11*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n11*n92 + n18*n2)*n21*n27*pow(n32, n14)*n46*pow(n88, n14) + n86) - n133*n42*n43*(pow(alpha, NP0*n2 - n2*n92)*n74*n79/n88 + n83) + n135*n42*n66*(pow(alpha, NP0*n2 - n6*n92)*n6*n61*n79/n88 - pow(alpha, n18*n2 - n6*n92)*n21*n22*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n6*n92)*pow(n32, n14)*n46*n6*n61*pow(n88, n14) + n87) - n137*n42*(pow(alpha, NP0*n2 - n2*n92)*n2*n3*n79/n88 + n77)*(pow(alpha, NP0*n2 - n2*n92)*n2*n30*n79/n88 + n2*n30*n31) - n138*n42*(pow(alpha, NP0*n2 - n12*n92)*n12*n3*n79/n88 + n78)*(pow(alpha, NP0*n2 - n12*n92)*n12*n30*n79/n88 + n30*n73) - n139*n42*(pow(alpha, NP0*n2 - n12*n92)*n12*n61*n79/n88 + pow(alpha, -n12*n92 + n18*n2)*n12*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n12*n92 + n18*n2)*n21*n28*pow(n32, n14)*n46*pow(n88, n14) + n84) + n140*n42*(pow(alpha, NP0*n2 - n8*n92)*n61*n79*n8/n88 - pow(alpha, n18*n2 - n8*n92)*n21*n24*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n8*n92)*pow(n32, n14)*n46*n61*n8*pow(n88, n14) + n85) + n143 + n144 + n145 + n146 + n147 + n148 + n149 + n150 + n187 + n188 + n189 + n190 + n191 + n192 + n193 + n194 - n42*n68*(pow(alpha, NP0*n2 - n11*n92)*n11*n3*n79/n88 + n3*n69)*(pow(alpha, NP0*n2 - n11*n92)*n11*n30*n79/n88 + n30*n69)/n123 + n42*n76*(pow(alpha, NP0*n2 - n10*n92)*n10*n3*n79/n88 + n3*n65)*(pow(alpha, NP0*n2 - n10*n92)*n10*n30*n79/n88 + n30*n65)/n122 - n42*n67*(pow(alpha, NP0*n2 - n9*n92)*n3*n79*n9/n88 + n3*n72)*(pow(alpha, NP0*n2 - n9*n92)*n30*n79*n9/n88 + n30*n72)/n121 - n42*n48*xF[3]*(pow(alpha, NP0*n2 - n8*n92)*n3*n79*n8/n88 + n3*n70)*(pow(alpha, NP0*n2 - n8*n92)*n30*n79*n8/n88 + n30*n70)/n120 - n42*n63*(pow(alpha, NP0*n2 - n7*n92)*n3*n7*n79/n88 + n3*n64)*(pow(alpha, NP0*n2 - n7*n92)*n30*n7*n79/n88 + n30*n64)/n119 - n42*n66*(pow(alpha, NP0*n2 - n6*n92)*n3*n6*n79/n88 + n3*n71)*(pow(alpha, NP0*n2 - n6*n92)*n30*n6*n79/n88 + n30*n71)/n118) - n0*n196 + 1.0*n133*n154*n42*n77))*(-n1*n143 - n1*n19*(-pow(n111, n14)*n42*n63*(pow(alpha, NP0*n2 - n7*n92)*n61*n7*n79/n88 - pow(alpha, n18*n2 - n7*n92)*n21*n23*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n7*n92)*pow(n32, n14)*n46*n61*n7*pow(n88, n14) + n80) - pow(n113, n14)*n42*n67*(pow(alpha, NP0*n2 - n9*n92)*n61*n79*n9/n88 - pow(alpha, n18*n2 - n9*n92)*n21*n25*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n9*n92)*pow(n32, n14)*n46*n61*pow(n88, n14)*n9 + n81) + pow(n114, n14)*n42*n76*(pow(alpha, NP0*n2 - n10*n92)*n10*n61*n79/n88 + pow(alpha, -n10*n92 + n18*n2)*n10*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n10*n92 + n18*n2)*n21*n26*pow(n32, n14)*n46*pow(n88, n14) + n82) - pow(n115, n14)*n42*n68*(pow(alpha, NP0*n2 - n11*n92)*n11*n61*n79/n88 + pow(alpha, -n11*n92 + n18*n2)*n11*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n11*n92 + n18*n2)*n21*n27*pow(n32, n14)*n46*pow(n88, n14) + n86) - n133*n42*n43*(pow(alpha, NP0*n2 - n2*n92)*n74*n79/n88 + n83) + n135*n42*n66*(pow(alpha, NP0*n2 - n6*n92)*n6*n61*n79/n88 - pow(alpha, n18*n2 - n6*n92)*n21*n22*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n6*n92)*pow(n32, n14)*n46*n6*n61*pow(n88, n14) + n87) - n137*n42*(pow(alpha, NP0*n2 - n2*n92)*n2*n3*n79/n88 + n77)*(pow(alpha, NP0*n2 - n2*n92)*n2*n30*n79/n88 + n2*n30*n31) - n138*n42*(pow(alpha, NP0*n2 - n12*n92)*n12*n3*n79/n88 + n78)*(pow(alpha, NP0*n2 - n12*n92)*n12*n30*n79/n88 + n30*n73) - n139*n42*(pow(alpha, NP0*n2 - n12*n92)*n12*n61*n79/n88 + pow(alpha, -n12*n92 + n18*n2)*n12*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n12*n92 + n18*n2)*n21*n28*pow(n32, n14)*n46*pow(n88, n14) + n84) + n140*n42*(pow(alpha, NP0*n2 - n8*n92)*n61*n79*n8/n88 - pow(alpha, n18*n2 - n8*n92)*n21*n24*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n8*n92)*pow(n32, n14)*n46*n61*n8*pow(n88, n14) + n85) + n143 + n144 + n145 + n146 + n147 + n148 + n149 + n150 + n187 + n188 + n189 + n190 + n191 + n192 + n193 + n194 - n42*n68*(pow(alpha, NP0*n2 - n11*n92)*n11*n3*n79/n88 + n3*n69)*(pow(alpha, NP0*n2 - n11*n92)*n11*n30*n79/n88 + n30*n69)/n123 + n42*n76*(pow(alpha, NP0*n2 - n10*n92)*n10*n3*n79/n88 + n3*n65)*(pow(alpha, NP0*n2 - n10*n92)*n10*n30*n79/n88 + n30*n65)/n122 - n42*n67*(pow(alpha, NP0*n2 - n9*n92)*n3*n79*n9/n88 + n3*n72)*(pow(alpha, NP0*n2 - n9*n92)*n30*n79*n9/n88 + n30*n72)/n121 - n42*n48*xF[3]*(pow(alpha, NP0*n2 - n8*n92)*n3*n79*n8/n88 + n3*n70)*(pow(alpha, NP0*n2 - n8*n92)*n30*n79*n8/n88 + n30*n70)/n120 - n42*n63*(pow(alpha, NP0*n2 - n7*n92)*n3*n7*n79/n88 + n3*n64)*(pow(alpha, NP0*n2 - n7*n92)*n30*n7*n79/n88 + n30*n64)/n119 - n42*n66*(pow(alpha, NP0*n2 - n6*n92)*n3*n6*n79/n88 + n3*n71)*(pow(alpha, NP0*n2 - n6*n92)*n30*n6*n79/n88 + n30*n71)/n118) - n1*n196 + 4.0*n133*n154*n42*n77 - 4.0*n137*n162*n42) + pow(-n18*(n0*n133*n42*n43*(pow(alpha, NP0*n2 - n2*n92)*n74*n79/n88 + n83) + n0*n137*n42*(pow(alpha, NP0*n2 - n2*n92)*n2*n3*n79/n88 + n77)*(pow(alpha, NP0*n2 - n2*n92)*n2*n30*n79/n88 + n2*n30*n31) + n0*xTj*(-pow(n111, n14)*n42*n63*(pow(alpha, NP0*n2 - n7*n92)*n61*n7*n79/n88 - pow(alpha, n18*n2 - n7*n92)*n21*n23*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n7*n92)*pow(n32, n14)*n46*n61*n7*pow(n88, n14) + n80) - pow(n113, n14)*n42*n67*(pow(alpha, NP0*n2 - n9*n92)*n61*n79*n9/n88 - pow(alpha, n18*n2 - n9*n92)*n21*n25*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n9*n92)*pow(n32, n14)*n46*n61*pow(n88, n14)*n9 + n81) + pow(n114, n14)*n42*n76*(pow(alpha, NP0*n2 - n10*n92)*n10*n61*n79/n88 + pow(alpha, -n10*n92 + n18*n2)*n10*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n10*n92 + n18*n2)*n21*n26*pow(n32, n14)*n46*pow(n88, n14) + n82) - pow(n115, n14)*n42*n68*(pow(alpha, NP0*n2 - n11*n92)*n11*n61*n79/n88 + pow(alpha, -n11*n92 + n18*n2)*n11*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n11*n92 + n18*n2)*n21*n27*pow(n32, n14)*n46*pow(n88, n14) + n86) - n133*n42*n43*(pow(alpha, NP0*n2 - n2*n92)*n74*n79/n88 + n83) + n135*n42*n66*(pow(alpha, NP0*n2 - n6*n92)*n6*n61*n79/n88 - pow(alpha, n18*n2 - n6*n92)*n21*n22*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n6*n92)*pow(n32, n14)*n46*n6*n61*pow(n88, n14) + n87) - n137*n42*(pow(alpha, NP0*n2 - n2*n92)*n2*n3*n79/n88 + n77)*(pow(alpha, NP0*n2 - n2*n92)*n2*n30*n79/n88 + n2*n30*n31) - n138*n42*(pow(alpha, NP0*n2 - n12*n92)*n12*n3*n79/n88 + n78)*(pow(alpha, NP0*n2 - n12*n92)*n12*n30*n79/n88 + n30*n73) - n139*n42*(pow(alpha, NP0*n2 - n12*n92)*n12*n61*n79/n88 + pow(alpha, -n12*n92 + n18*n2)*n12*pow(n32, n14)*n46*n61*pow(n88, n14) - pow(alpha, -n12*n92 + n18*n2)*n21*n28*pow(n32, n14)*n46*pow(n88, n14) + n84) + n140*n42*(pow(alpha, NP0*n2 - n8*n92)*n61*n79*n8/n88 - pow(alpha, n18*n2 - n8*n92)*n21*n24*pow(n32, n14)*n46*pow(n88, n14) + pow(alpha, n18*n2 - n8*n92)*pow(n32, n14)*n46*n61*n8*pow(n88, n14) + n85) + n143 + n144 + n145 + n146 + n147 + n148 + n149 + n150 + n187 + n188 + n189 + n190 + n191 + n192 + n193 + n194 - n42*n68*(pow(alpha, NP0*n2 - n11*n92)*n11*n3*n79/n88 + n3*n69)*(pow(alpha, NP0*n2 - n11*n92)*n11*n30*n79/n88 + n30*n69)/n123 + n42*n76*(pow(alpha, NP0*n2 - n10*n92)*n10*n3*n79/n88 + n3*n65)*(pow(alpha, NP0*n2 - n10*n92)*n10*n30*n79/n88 + n30*n65)/n122 - n42*n67*(pow(alpha, NP0*n2 - n9*n92)*n3*n79*n9/n88 + n3*n72)*(pow(alpha, NP0*n2 - n9*n92)*n30*n79*n9/n88 + n30*n72)/n121 - n42*n48*xF[3]*(pow(alpha, NP0*n2 - n8*n92)*n3*n79*n8/n88 + n3*n70)*(pow(alpha, NP0*n2 - n8*n92)*n30*n79*n8/n88 + n30*n70)/n120 - n42*n63*(pow(alpha, NP0*n2 - n7*n92)*n3*n7*n79/n88 + n3*n64)*(pow(alpha, NP0*n2 - n7*n92)*n30*n7*n79/n88 + n30*n64)/n119 - n42*n66*(pow(alpha, NP0*n2 - n6*n92)*n3*n6*n79/n88 + n3*n71)*(pow(alpha, NP0*n2 - n6*n92)*n30*n6*n79/n88 + n30*n71)/n118) + 1.0*n133*n42*n77*(pow(alpha, NP0*n2 - n2*n92)*n2*n3*n79/n88 + n77) + n151) - n212, -n1);
18169  NP_sqrt_base = fabs(NP_sqrt_base);
18170  NP1 = (-NP_b - pow(NP_sqrt_base, -n0))/NP_2a;
18171  NT1 = n62*(n89 - log(-pow(alpha, NP1*n2)*n79 + 1));
18172  g0 = MW[1] - Mstar;
18173  g1 = MW[0] - Mstar;
18174  g2 = NT1 + 1;
18175  g3 = xPj - xTj;
18176  g4 = MW[2] - Mstar;
18177  g5 = MW[3] - Mstar;
18178  g6 = MW[4] - Mstar;
18179  g7 = MW[5] - Mstar;
18180  g8 = MW[6] - Mstar;
18181  g9 = MW[7] - Mstar;
18182  g10 = xF[0] - xTj;
18183  g11 = xF[0] - xPj;
18184  g12 = -xTj;
18185  g13 = xPj/xF[1];
18186  g14 = pow(alpha, -g1);
18187  g15 = pow(alpha, -g0);
18188  g16 = pow(alpha, -g4);
18189  g17 = pow(alpha, -g5);
18190  g18 = pow(alpha, -g6);
18191  g19 = pow(alpha, -g7);
18192  g20 = pow(alpha, -g8);
18193  g21 = pow(alpha, -g9);
18194  g22 = log(xF[0]/xF[1]);
18195  g23 = -g2;
18196  g24 = pow(alpha, NP1*g0);
18197  g25 = pow(alpha, NP1*g1);
18198  g26 = log(g14);
18199  g27 = pow(alpha, NP1*g4);
18200  g28 = pow(alpha, NP1*g5);
18201  g29 = pow(alpha, NP1*g6);
18202  g30 = pow(alpha, NP1*g7);
18203  g31 = pow(alpha, NP1*g8);
18204  g32 = pow(alpha, NP1*g9);
18205  g33 = -g22;
18206  g34 = g10/g3;
18207  g35 = g3/g10;
18208  g36 = -g24 + 1;
18209  g37 = -g24 + 1;
18210  g38 = -g25 + 1;
18211  g39 = -g27 + 1;
18212  g40 = -g28 + 1;
18213  g41 = -g29 + 1;
18214  g42 = -g30 + 1;
18215  g43 = -g31 + 1;
18216  g44 = -g32 + 1;
18217  g45 = -g25;
18218  g46 = -g27;
18219  g47 = -g28;
18220  g48 = -g29;
18221  g49 = -g30;
18222  g50 = -g31;
18223  g51 = -g32;
18224  g52 = -1.0*g22;
18225  g53 = -g3/g11;
18226  g54 = g11/(g3*xF[1]);
18227  g55 = pow(alpha, g0*g23) - 1;
18228  g56 = pow(alpha, g0*g23) - 1;
18229  g57 = pow(alpha, g1*g23) - 1;
18230  g58 = pow(alpha, g23*g4) - 1;
18231  g59 = pow(alpha, g23*g5) - 1;
18232  g60 = pow(alpha, g23*g6) - 1;
18233  g61 = pow(alpha, g23*g7) - 1;
18234  g62 = pow(alpha, g23*g8) - 1;
18235  g63 = pow(alpha, g23*g9) - 1;
18236  g64 = -pow(alpha, g1*g23);
18237  g65 = -pow(alpha, g23*g4);
18238  g66 = -pow(alpha, g23*g5);
18239  g67 = -pow(alpha, g23*g6);
18240  g68 = -pow(alpha, g23*g7);
18241  g69 = -pow(alpha, g23*g8);
18242  g70 = -pow(alpha, g23*g9);
18243  g71 = g37 + g56;
18244  g72 = -g25 - g64;
18245  g73 = -g27 - g65;
18246  g74 = -g28 - g66;
18247  g75 = -g29 - g67;
18248  g76 = -g30 - g68;
18249  g77 = -g31 - g69;
18250  g78 = -g32 - g70;
18251  g79 = pow(alpha, g1*g23) + g45;
18252  g80 = g37 + g56;
18253  g81 = pow(alpha, g23*g4) + g46;
18254  g82 = pow(alpha, g23*g5) + g47;
18255  g83 = pow(alpha, g23*g6) + g48;
18256  g84 = pow(alpha, g23*g7) + g49;
18257  g85 = pow(alpha, g23*g8) + g50;
18258  g86 = pow(alpha, g23*g9) + g51;
18259  g87 = xF[0]/g79;
18260  g88 = xF[1]/g80;
18261  g89 = xF[2]/g81;
18262  g90 = xF[3]/g82;
18263  g91 = xF[6]/g85;
18264  g92 = xF[7]/g86;
18265  g93 = xF[4]/g83;
18266  g94 = xF[5]/g84;
18267  g95 = xF[1]/g71;
18268  g96 = xF[0]/g72;
18269  g97 = xF[4]/g75;
18270  g98 = xF[5]/g76;
18271  g99 = xF[7]/g78;
18272  g100 = xF[2]/g73;
18273  g101 = xF[6]/g77;
18274  g102 = xF[3]/g74;
18275  g103 = g43/g77;
18276  g104 = g41/g75;
18277  g105 = g44/g78;
18278  g106 = g38/g72;
18279  g107 = g42/g76;
18280  g108 = g40/g74;
18281  g109 = g36/g71;
18282  g110 = g39/g73;
18283  g111 = g55/g71;
18284  g112 = g57/g72;
18285  g113 = g61/g76;
18286  g114 = g58/g73;
18287  g115 = g59/g74;
18288  g116 = g60/g75;
18289  g117 = g62/g77;
18290  g118 = g63/g78;
18291  g119 = log(g12*g54*g80/g37);
18292  g120 = log(g12*g54*g71/g36);
18293  g121 = log(g13*g34*g80/g56);
18294  g122 = 1.0*g119;
18295  g123 = log(g13*g34*g71/g55);
18296  g124 = 1.0*g121;
18297  g125 = -g122*g37*g88 - g122*g87*(g45 + 1) - g122*g89*(g46 + 1) - g122*g90*(g47 + 1) - g122*g91*(g50 + 1) - g122*g92*(g51 + 1) - g122*g93*(g48 + 1) - g122*g94*(g49 + 1) - g124*g56*g88 - g124*g87*(pow(alpha, g1*g23) - 1) - g124*g89*(pow(alpha, g23*g4) - 1) - g124*g90*(pow(alpha, g23*g5) - 1) - g124*g91*(pow(alpha, g23*g8) - 1) - g124*g92*(pow(alpha, g23*g9) - 1) - g124*g93*(pow(alpha, g23*g6) - 1) - g124*g94*(pow(alpha, g23*g7) - 1) - g52*xF[0] - g52*xF[1] - g52*xF[2] - g52*xF[3] - g52*xF[4] - g52*xF[5] - g52*xF[6] - g52*xF[7];
18298  LpF = xF[0]*(g14 + 1.0)*(g106*g120 + g112*g123 + g33)/(g26*(g14 - 1.0)) + xF[1]*(g15 + 1.0)*(g109*g120 + g111*g123 + g33)/(g26*(g15 - 1.0)) + xF[2]*(g16 + 1.0)*(g110*g120 + g114*g123 + g33)/(g26*(g16 - 1.0)) + xF[3]*(g17 + 1.0)*(g108*g120 + g115*g123 + g33)/(g26*(g17 - 1.0)) + xF[4]*(g18 + 1.0)*(g104*g120 + g116*g123 + g33)/(g26*(g18 - 1.0)) + xF[5]*(g19 + 1.0)*(g107*g120 + g113*g123 + g33)/(g26*(g19 - 1.0)) + xF[6]*(g20 + 1.0)*(g103*g120 + g117*g123 + g33)/(g26*(g20 - 1.0)) + xF[7]*(g21 + 1.0)*(g105*g120 + g118*g123 + g33)/(g26*(g21 - 1.0));
18299  PpF = g34;
18300  TpF = -g11/g3;
18301  SWUpF = g125;
18302  SWUpP = g125*g35;
18303  xP[0] = g35*g57*g96;
18304  xP[1] = g35*g55*g95;
18305  xP[2] = g100*g35*g58;
18306  xP[3] = g102*g35*g59;
18307  xP[4] = g35*g60*g97;
18308  xP[5] = g35*g61*g98;
18309  xP[6] = g101*g35*g62;
18310  xP[7] = g35*g63*g99;
18311  xT[0] = g38*g53*g96;
18312  xT[1] = g36*g53*g95;
18313  xT[2] = g100*g39*g53;
18314  xT[3] = g102*g40*g53;
18315  xT[4] = g41*g53*g97;
18316  xT[5] = g42*g53*g98;
18317  xT[6] = g101*g43*g53;
18318  xT[7] = g44*g53*g99;
18319  break;
18320  case 9:
18321  n0 = MW[0] - Mstar;
18322  n1 = log(alpha);
18323  n2 = xPj - xTj;
18324  n3 = xF[0] - xPj;
18325  n4 = MW[1] - Mstar;
18326  n5 = MW[2] - Mstar;
18327  n6 = MW[3] - Mstar;
18328  n7 = MW[4] - Mstar;
18329  n8 = MW[5] - Mstar;
18330  n9 = MW[6] - Mstar;
18331  n10 = MW[7] - Mstar;
18332  n11 = MW[8] - Mstar;
18333  n12 = log(xTj);
18334  n13 = -2;
18335  n14 = xF[0]*xPj;
18336  n15 = -Mstar;
18337  n16 = -xPj;
18338  n17 = -NP0*n13;
18339  n18 = -xF[0];
18340  n19 = -xTj;
18341  n20 = pow(n0, -n13);
18342  n21 = pow(n1, -n13);
18343  n22 = pow(n4, -n13);
18344  n23 = pow(n5, -n13);
18345  n24 = pow(n6, -n13);
18346  n25 = pow(n7, -n13);
18347  n26 = pow(n8, -n13);
18348  n27 = pow(n9, -n13);
18349  n28 = pow(n10, -n13);
18350  n29 = pow(n11, -n13);
18351  n30 = Mstar*n1;
18352  n31 = -n1*n13;
18353  n32 = pow(alpha, NP0*n0);
18354  n33 = n14 + n18*xTj;
18355  n34 = n14 + n16*xTj;
18356  n35 = pow(alpha, NP0*n4);
18357  n36 = pow(alpha, NP0*n5);
18358  n37 = pow(alpha, NP0*n6);
18359  n38 = pow(alpha, NP0*n7);
18360  n39 = pow(alpha, NP0*n8);
18361  n40 = pow(alpha, NP0*n9);
18362  n41 = pow(alpha, NP0*n10);
18363  n42 = pow(alpha, NP0*n11);
18364  n43 = -MW[0]*n1;
18365  n44 = n2/n3;
18366  n45 = n0*n1;
18367  n46 = -n32 + 1;
18368  n47 = -n35 + 1;
18369  n48 = pow(alpha, n0*n17);
18370  n49 = pow(n33, -n13);
18371  n50 = pow(n34, -n13);
18372  n51 = -n36 + 1;
18373  n52 = -n37 + 1;
18374  n53 = -n38 + 1;
18375  n54 = -n39 + 1;
18376  n55 = -n40 + 1;
18377  n56 = -n41 + 1;
18378  n57 = -n42 + 1;
18379  n58 = -n55;
18380  n59 = -n51;
18381  n60 = -n53;
18382  n61 = -n52;
18383  n62 = -n32;
18384  n63 = -n41;
18385  n64 = 1.0/n45;
18386  n65 = n0*n21;
18387  n66 = n20*n21;
18388  n67 = n36*n5;
18389  n68 = n39*n8;
18390  n69 = n57*xF[8];
18391  n70 = n40*n9;
18392  n71 = n37*n6;
18393  n72 = n35*n4;
18394  n73 = n38*n7;
18395  n74 = n11*n42;
18396  n75 = n10*n41;
18397  n76 = log((-1.0 + xPj/xF[0])/n2);
18398  n77 = -n54*xF[5];
18399  n78 = -n47*xF[1];
18400  n79 = n1*n74;
18401  n80 = n1*n75;
18402  n81 = n34/n33;
18403  n82 = n21*n23*n36;
18404  n83 = n21*n25*n38;
18405  n84 = n21*n29*n42;
18406  n85 = n21*n28*n41;
18407  n86 = n21*n24*n37;
18408  n87 = n21*n27*n40;
18409  n88 = n21*n22*n35;
18410  n89 = n44*n77;
18411  n90 = n62*n81 + 1;
18412  n91 = pow(n90, -n13);
18413  n92 = n12 + n30 + n43 + n76;
18414  n93 = n32*n81/n90;
18415  n94 = n21*n48*n50/(n49*n91);
18416  n95 = n64*(n92 - log(n90)) + 1;
18417  n96 = pow(alpha, n0*n95);
18418  n97 = pow(alpha, n4*n95);
18419  n98 = pow(alpha, n5*n95);
18420  n99 = pow(alpha, n6*n95);
18421  n100 = pow(alpha, n7*n95);
18422  n101 = pow(alpha, n8*n95);
18423  n102 = pow(alpha, n9*n95);
18424  n103 = pow(alpha, n10*n95);
18425  n104 = pow(alpha, n11*n95);
18426  n105 = n4/n97;
18427  n106 = n11/n104;
18428  n107 = n7/n100;
18429  n108 = n6/n99;
18430  n109 = n10/n103;
18431  n110 = n9/n102;
18432  n111 = n8/n101;
18433  n112 = n5/n98;
18434  n113 = n46 - 1 + 1.0/n96;
18435  n114 = n47 - 1 + 1.0/n97;
18436  n115 = n51 - 1 + 1.0/n98;
18437  n116 = n52 - 1 + 1.0/n99;
18438  n117 = n53 - 1 + 1.0/n100;
18439  n118 = n54 - 1 + 1.0/n101;
18440  n119 = n55 - 1 + 1.0/n102;
18441  n120 = n56 - 1 + 1.0/n103;
18442  n121 = n57 - 1 + 1.0/n104;
18443  n122 = pow(n113, -n13);
18444  n123 = pow(n114, -n13);
18445  n124 = pow(n115, -n13);
18446  n125 = pow(n116, -n13);
18447  n126 = pow(n117, -n13);
18448  n127 = pow(n118, -n13);
18449  n128 = pow(n119, -n13);
18450  n129 = pow(n120, -n13);
18451  n130 = pow(n121, -n13);
18452  n131 = pow(n113, 3);
18453  n132 = pow(n114, 3);
18454  n133 = pow(n115, 3);
18455  n134 = pow(n116, 3);
18456  n135 = pow(n117, 3);
18457  n136 = pow(n118, 3);
18458  n137 = pow(n119, 3);
18459  n138 = pow(n120, 3);
18460  n139 = pow(n121, 3);
18461  n140 = xF[8]/n121;
18462  n141 = xF[6]/n119;
18463  n142 = xF[7]/n120;
18464  n143 = xF[1]/n114;
18465  n144 = xF[2]/n115;
18466  n145 = xF[4]/n117;
18467  n146 = xF[3]/n116;
18468  n147 = xF[6]/n137;
18469  n148 = n1*xF[5]/n118;
18470  n149 = -1/n130;
18471  n150 = n1*n146;
18472  n151 = n32*xF[0]/n113;
18473  n152 = n46/n113;
18474  n153 = n32*xF[0]/n122;
18475  n154 = n56*xF[7]/n138;
18476  n155 = n56*xF[7]/n129;
18477  n156 = n61*xF[3]/n125;
18478  n157 = n21*n26*n39*xF[5]/n118;
18479  n158 = n151*n44/n64;
18480  n159 = n18*n32*n44/(n113*n64);
18481  n160 = n151*n44*n66;
18482  n161 = n143*n44*n88;
18483  n162 = n144*n44*n82;
18484  n163 = n146*n44*n86;
18485  n164 = n145*n44*n83;
18486  n165 = n157*n44;
18487  n166 = n141*n44*n87;
18488  n167 = n142*n44*n85;
18489  n168 = n140*n44*n84;
18490  n169 = 0.5*n160;
18491  n170 = n81/(n90*n96) + 1;
18492  n171 = n170*n46;
18493  n172 = n32/n64 + n93/(n64*n96);
18494  n173 = n1*n105*n93 + n1*n72;
18495  n174 = n1*n112*n93 + n1*n67;
18496  n175 = n1*n108*n93 + n1*n71;
18497  n176 = n1*n107*n93 + n1*n73;
18498  n177 = n1*n111*n93 + n1*n68;
18499  n178 = n1*n110*n93 + n1*n70;
18500  n179 = n1*n109*n93 + n80;
18501  n180 = n1*n106*n93 + n79;
18502  n181 = pow(n172, -n13);
18503  n182 = pow(n173, -n13);
18504  n183 = pow(n174, -n13);
18505  n184 = pow(n175, -n13);
18506  n185 = pow(n176, -n13);
18507  n186 = pow(n177, -n13);
18508  n187 = pow(n178, -n13);
18509  n188 = pow(n179, -n13);
18510  n189 = pow(n180, -n13);
18511  n190 = n174*xF[2];
18512  n191 = n175*xF[3];
18513  n192 = n0*n31*n32 + n0*n31*n93/n96;
18514  n193 = n32*n66 + n66*n93/n96;
18515  n194 = n172*n46;
18516  n195 = n187*n55;
18517  n196 = n176*n60*xF[4];
18518  n197 = n177/n127;
18519  n198 = n173/n123;
18520  n199 = n178*xF[6]/n128;
18521  n200 = n189/n139;
18522  n201 = n192/n131;
18523  n202 = n181*n46*xF[0]/n131;
18524  n203 = n184*n52*xF[3]/n134;
18525  n204 = n185*n53*xF[4]/n135;
18526  n205 = n183*n51*xF[2]/n133;
18527  n206 = n182*n47*xF[1]/n132;
18528  n207 = n193*n46/n122;
18529  n208 = n18*n44*n46*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)/n122;
18530  n209 = n13*n18*n32*n44*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)/(n122*n64);
18531  n210 = n31*n44*n72*xF[1]*(pow(alpha, NP0*n0 - n4*n95)*n1*n4*n81/n90 + n1*n72)/n123;
18532  n211 = n31*n44*n67*xF[2]*(pow(alpha, NP0*n0 - n5*n95)*n1*n5*n81/n90 + n1*n67)/n124;
18533  n212 = n31*n44*n71*xF[3]*(pow(alpha, NP0*n0 - n6*n95)*n1*n6*n81/n90 + n1*n71)/n125;
18534  n213 = n31*n44*n73*xF[4]*(pow(alpha, NP0*n0 - n7*n95)*n1*n7*n81/n90 + n1*n73)/n126;
18535  n214 = n31*n44*n68*xF[5]*(pow(alpha, NP0*n0 - n8*n95)*n1*n8*n81/n90 + n1*n68)/n127;
18536  n215 = n31*n44*n70*xF[6]*(pow(alpha, NP0*n0 - n9*n95)*n1*n81*n9/n90 + n1*n70)/n128;
18537  n216 = n31*n44*n75*xF[7]*(pow(alpha, NP0*n0 - n10*n95)*n1*n10*n81/n90 + n80)/n129;
18538  n217 = n31*n44*n74*xF[8]*(pow(alpha, NP0*n0 - n11*n95)*n1*n11*n81/n90 + n79)/n130;
18539  n218 = 1.0*n153*n172*n44/n64;
18540  n219 = n18*n44*n46*(pow(alpha, NP0*n0 - n0*n95)*n66*n81/n90 + n32*n66)/n122;
18541  n220 = -0.5*n207*n44*xF[0];
18542  n221 = n158 + n208;
18543  n222 = n105*n48*n50*n65/(n49*n91) + n105*n65*n93 - n22*n94/n97 + n88;
18544  n223 = n112*n48*n50*n65/(n49*n91) + n112*n65*n93 - n23*n94/n98 + n82;
18545  n224 = n107*n48*n50*n65/(n49*n91) + n107*n65*n93 + n83 - n25*n94/n100;
18546  n225 = n111*n48*n50*n65/(n49*n91) + n111*n65*n93 + n21*n26*n39 - n26*n94/n101;
18547  n226 = n110*n48*n50*n65/(n49*n91) + n110*n65*n93 + n87 - n27*n94/n102;
18548  n227 = n44*n78*(-pow(alpha, n0*n17 - n4*n95)*n21*n22*n50/(n49*n91) + pow(alpha, n0*n17 - n4*n95)*n4*n50*n65/(n49*n91) + n105*n65*n93 + n88)/n123;
18549  n228 = n44*n59*xF[2]*(-pow(alpha, n0*n17 - n5*n95)*n21*n23*n50/(n49*n91) + pow(alpha, n0*n17 - n5*n95)*n5*n50*n65/(n49*n91) + n112*n65*n93 + n82)/n124;
18550  n229 = n156*n44*(-pow(alpha, n0*n17 - n6*n95)*n21*n24*n50/(n49*n91) + pow(alpha, n0*n17 - n6*n95)*n50*n6*n65/(n49*n91) + n108*n65*n93 + n86);
18551  n230 = n44*n60*xF[4]*(-pow(alpha, n0*n17 - n7*n95)*n21*n25*n50/(n49*n91) + pow(alpha, n0*n17 - n7*n95)*n50*n65*n7/(n49*n91) + n107*n65*n93 + n83)/n126;
18552  n231 = n89*(-pow(alpha, n0*n17 - n8*n95)*n21*n26*n50/(n49*n91) + pow(alpha, n0*n17 - n8*n95)*n50*n65*n8/(n49*n91) + n111*n65*n93 + n21*n26*n39)/n127;
18553  n232 = n44*n58*xF[6]*(-pow(alpha, n0*n17 - n9*n95)*n21*n27*n50/(n49*n91) + pow(alpha, n0*n17 - n9*n95)*n50*n65*n9/(n49*n91) + n110*n65*n93 + n87)/n128;
18554  n233 = -n155*n44*(pow(alpha, n0*n17 - n10*n95)*n10*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n10*n95)*n21*n28*n50/(n49*n91) + n109*n65*n93 + n85);
18555  n234 = n149*n44*n69*(pow(alpha, n0*n17 - n11*n95)*n11*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n11*n95)*n21*n29*n50/(n49*n91) + n106*n65*n93 + n84);
18556  n235 = n169 + n218 + n220;
18557  n236 = n1*n141*n44*n70 + n1*n143*n44*n72 + n1*n144*n44*n67 + n1*n145*n44*n73 + n140*n44*n79 + n142*n44*n80 + n148*n44*n68 + n149*n180*n44*n69 + n150*n44*n71 - n155*n179*n44 + n156*n175*n44 + n197*n89 + n198*n44*n78 + n199*n44*n58 + n221 + n196*n44/n126 + n190*n44*n59/n124;
18558  n237 = n236*xTj;
18559  n238 = n160 + n161 + n162 + n163 + n164 + n165 + n166 + n167 + n168 + n209 + n210 + n211 + n212 + n213 + n214 + n215 + n216 + n217 + n219 + n227 + n228 + n229 + n230 + n231 + n232 + n233 + n234;
18560  n239 = n147*n178*n44*n58*(n110*n31*n93 + n31*n70) - n154*n179*n44*(n109*n31*n93 + n31*n75) + n238 - n180*n44*n69*(n106*n31*n93 + n31*n74)/n139 + n177*n89*(n111*n31*n93 + n31*n68)/n136 + n196*n44*(n107*n31*n93 + n31*n73)/n135 + n191*n44*n61*(n108*n31*n93 + n31*n71)/n134 + n190*n44*n59*(n112*n31*n93 + n31*n67)/n133 + n173*n44*n78*(n105*n31*n93 + n31*n72)/n132 + n18*n44*n46*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)*(pow(alpha, NP0*n0 - n0*n95)*n0*n31*n81/n90 + n0*n31*n32)/n131;
18561  NP_b = -n153*n171*n44/n64 - n159 - n17*(1.0*n153*n44*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)/n64 + n169 - 1.0*n202*n44 - 0.5*xTj*(n13*n147*n195*n44 + n13*n154*n188*n44 + n13*n200*n44*n69 + n13*n202*n44 + n13*n203*n44 + n13*n204*n44 + n13*n205*n44 + n13*n206*n44 + n13*n186*n44*n54*xF[5]/n136 + n149*n44*n69*(pow(alpha, NP0*n0 - n11*n95)*n11*n65*n81/n90 + pow(alpha, n0*n17 - n11*n95)*n11*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n11*n95)*n21*n29*n50/(n49*n91) + n84) - n155*n44*(pow(alpha, NP0*n0 - n10*n95)*n10*n65*n81/n90 + pow(alpha, n0*n17 - n10*n95)*n10*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n10*n95)*n21*n28*n50/(n49*n91) + n85) + n156*n44*(pow(alpha, NP0*n0 - n6*n95)*n6*n65*n81/n90 - pow(alpha, n0*n17 - n6*n95)*n21*n24*n50/(n49*n91) + pow(alpha, n0*n17 - n6*n95)*n50*n6*n65/(n49*n91) + n86) + n160 + n161 + n162 + n163 + n164 + n165 + n166 + n167 + n168 + n209 + n210 + n211 + n212 + n213 + n214 + n215 + n216 + n217 + n219 + n44*n58*xF[6]*(pow(alpha, NP0*n0 - n9*n95)*n65*n81*n9/n90 - pow(alpha, n0*n17 - n9*n95)*n21*n27*n50/(n49*n91) + pow(alpha, n0*n17 - n9*n95)*n50*n65*n9/(n49*n91) + n87)/n128 + n89*(pow(alpha, NP0*n0 - n8*n95)*n65*n8*n81/n90 - pow(alpha, n0*n17 - n8*n95)*n21*n26*n50/(n49*n91) + pow(alpha, n0*n17 - n8*n95)*n50*n65*n8/(n49*n91) + n21*n26*n39)/n127 + n44*n60*xF[4]*(pow(alpha, NP0*n0 - n7*n95)*n65*n7*n81/n90 - pow(alpha, n0*n17 - n7*n95)*n21*n25*n50/(n49*n91) + pow(alpha, n0*n17 - n7*n95)*n50*n65*n7/(n49*n91) + n83)/n126 + n44*n59*xF[2]*(pow(alpha, NP0*n0 - n5*n95)*n5*n65*n81/n90 - pow(alpha, n0*n17 - n5*n95)*n21*n23*n50/(n49*n91) + pow(alpha, n0*n17 - n5*n95)*n5*n50*n65/(n49*n91) + n82)/n124 + n44*n78*(pow(alpha, NP0*n0 - n4*n95)*n4*n65*n81/n90 - pow(alpha, n0*n17 - n4*n95)*n21*n22*n50/(n49*n91) + pow(alpha, n0*n17 - n4*n95)*n4*n50*n65/(n49*n91) + n88)/n123) - 0.5*n44*n46*xF[0]*(pow(alpha, NP0*n0 - n0*n95)*n66*n81/n90 + n32*n66)/n122) - n44*xTj*(n1*n141*n70 + n1*n143*n72 + n1*n144*n67 + n1*n145*n73 + n140*n79 + n142*n80 + n148*n68 + n149*n180*n69 + n150*n71 + n151/n64 - n155*n179 + n156*n175 + n197*n77 + n198*n78 + n199*n58 + n196/n126 + n190*n59/n124 + n18*n46*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)/n122);
18562  NP_2a = -n44*(n13*pow(n170, -n13)*n18*n46*n48*n66/n131 - 1.0*n151*n66 + n153*n171*n66 + 1.0*xTj*(n13*n147*n195 + n13*n154*n188 + n13*n200*n69 + n13*n202 + n13*n203 + n13*n204 + n13*n205 + n13*n206 + n13*n186*n54*xF[5]/n136 + n140*n84 + n141*n87 + n142*n85 + n143*n88 + n144*n82 + n145*n83 + n146*n86 + n149*n69*(pow(alpha, n0*n17 - n11*n95)*n11*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n11*n95)*n21*n29*n50/(n49*n91) + n106*n65*n93 + n84) + n151*n66 - n155*(pow(alpha, n0*n17 - n10*n95)*n10*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n10*n95)*n21*n28*n50/(n49*n91) + n109*n65*n93 + n85) + n156*(-pow(alpha, n0*n17 - n6*n95)*n21*n24*n50/(n49*n91) + pow(alpha, n0*n17 - n6*n95)*n50*n6*n65/(n49*n91) + n108*n65*n93 + n86) + n157 + n31*n74*xF[8]*(pow(alpha, NP0*n0 - n11*n95)*n1*n11*n81/n90 + n79)/n130 + n31*n75*xF[7]*(pow(alpha, NP0*n0 - n10*n95)*n1*n10*n81/n90 + n80)/n129 + n31*n70*xF[6]*(pow(alpha, NP0*n0 - n9*n95)*n1*n81*n9/n90 + n1*n70)/n128 + n58*xF[6]*(-pow(alpha, n0*n17 - n9*n95)*n21*n27*n50/(n49*n91) + pow(alpha, n0*n17 - n9*n95)*n50*n65*n9/(n49*n91) + n110*n65*n93 + n87)/n128 + n31*n68*xF[5]*(pow(alpha, NP0*n0 - n8*n95)*n1*n8*n81/n90 + n1*n68)/n127 + n77*(-pow(alpha, n0*n17 - n8*n95)*n21*n26*n50/(n49*n91) + pow(alpha, n0*n17 - n8*n95)*n50*n65*n8/(n49*n91) + n111*n65*n93 + n21*n26*n39)/n127 + n31*n73*xF[4]*(pow(alpha, NP0*n0 - n7*n95)*n1*n7*n81/n90 + n1*n73)/n126 + n60*xF[4]*(-pow(alpha, n0*n17 - n7*n95)*n21*n25*n50/(n49*n91) + pow(alpha, n0*n17 - n7*n95)*n50*n65*n7/(n49*n91) + n107*n65*n93 + n83)/n126 + n31*n71*xF[3]*(pow(alpha, NP0*n0 - n6*n95)*n1*n6*n81/n90 + n1*n71)/n125 + n31*n67*xF[2]*(pow(alpha, NP0*n0 - n5*n95)*n1*n5*n81/n90 + n1*n67)/n124 + n59*xF[2]*(-pow(alpha, n0*n17 - n5*n95)*n21*n23*n50/(n49*n91) + pow(alpha, n0*n17 - n5*n95)*n5*n50*n65/(n49*n91) + n112*n65*n93 + n82)/n124 + n31*n72*xF[1]*(pow(alpha, NP0*n0 - n4*n95)*n1*n4*n81/n90 + n1*n72)/n123 + n78*(-pow(alpha, n0*n17 - n4*n95)*n21*n22*n50/(n49*n91) + pow(alpha, n0*n17 - n4*n95)*n4*n50*n65/(n49*n91) + n105*n65*n93 + n88)/n123 + n13*n18*n32*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)/(n122*n64) + n18*n46*(pow(alpha, NP0*n0 - n0*n95)*n66*n81/n90 + n32*n66)/n122) - 2.0*n170*n48*n66*xF[0]/n122);
18563  NP_sqrt_base = (NP0*(n19*(n1*n141*n44*n70 + n1*n143*n44*n72 + n1*n144*n44*n67 + n1*n145*n44*n73 + n140*n44*n79 + n142*n44*n80 + n148*n44*n68 + n149*n44*n69*(pow(alpha, NP0*n0 - n11*n95)*n1*n11*n81/n90 + n79) + n150*n44*n71 - n155*n44*(pow(alpha, NP0*n0 - n10*n95)*n1*n10*n81/n90 + n80) + n156*n44*(pow(alpha, NP0*n0 - n6*n95)*n1*n6*n81/n90 + n1*n71) + n221 + n44*n58*xF[6]*(pow(alpha, NP0*n0 - n9*n95)*n1*n81*n9/n90 + n1*n70)/n128 + n89*(pow(alpha, NP0*n0 - n8*n95)*n1*n8*n81/n90 + n1*n68)/n127 + n44*n60*xF[4]*(pow(alpha, NP0*n0 - n7*n95)*n1*n7*n81/n90 + n1*n73)/n126 + n44*n59*xF[2]*(pow(alpha, NP0*n0 - n5*n95)*n1*n5*n81/n90 + n1*n67)/n124 + n44*n78*(pow(alpha, NP0*n0 - n4*n95)*n1*n4*n81/n90 + n1*n72)/n123) + n221) + n152*n44*xF[0] + xTj*(n141*n44*n58 - n142*n44*n56 + n144*n44*n59 + n145*n44*n60 + n146*n44*n61 + n152*n18*n44 - n44*n69/n121 + n89/n118 + n44*n78/n114) + pow(NP0, -n13)*(-1.0*n153*n172*n44/n64 - 0.5*n160 + 0.5*n194*n201*n44*xF[0] + 0.5*n207*n44*xF[0] + 0.5*n239*xTj))*(-n13*n19*(n147*n44*n58*(pow(alpha, NP0*n0 - n9*n95)*n1*n81*n9/n90 + n1*n70)*(pow(alpha, NP0*n0 - n9*n95)*n31*n81*n9/n90 + n31*n70) + n149*n44*n69*(pow(alpha, NP0*n0 - n11*n95)*n11*n65*n81/n90 + pow(alpha, n0*n17 - n11*n95)*n11*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n11*n95)*n21*n29*n50/(n49*n91) + n84) - n154*n44*(pow(alpha, NP0*n0 - n10*n95)*n1*n10*n81/n90 + n80)*(pow(alpha, NP0*n0 - n10*n95)*n10*n31*n81/n90 + n31*n75) - n155*n44*(pow(alpha, NP0*n0 - n10*n95)*n10*n65*n81/n90 + pow(alpha, n0*n17 - n10*n95)*n10*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n10*n95)*n21*n28*n50/(n49*n91) + n85) + n156*n44*(pow(alpha, NP0*n0 - n6*n95)*n6*n65*n81/n90 - pow(alpha, n0*n17 - n6*n95)*n21*n24*n50/(n49*n91) + pow(alpha, n0*n17 - n6*n95)*n50*n6*n65/(n49*n91) + n86) + n160 + n161 + n162 + n163 + n164 + n165 + n166 + n167 + n168 + n209 + n210 + n211 + n212 + n213 + n214 + n215 + n216 + n217 + n219 - n44*n69*(pow(alpha, NP0*n0 - n11*n95)*n1*n11*n81/n90 + n79)*(pow(alpha, NP0*n0 - n11*n95)*n11*n31*n81/n90 + n31*n74)/n139 + n89*(pow(alpha, NP0*n0 - n8*n95)*n1*n8*n81/n90 + n1*n68)*(pow(alpha, NP0*n0 - n8*n95)*n31*n8*n81/n90 + n31*n68)/n136 + n44*n60*xF[4]*(pow(alpha, NP0*n0 - n7*n95)*n1*n7*n81/n90 + n1*n73)*(pow(alpha, NP0*n0 - n7*n95)*n31*n7*n81/n90 + n31*n73)/n135 + n44*n61*xF[3]*(pow(alpha, NP0*n0 - n6*n95)*n1*n6*n81/n90 + n1*n71)*(pow(alpha, NP0*n0 - n6*n95)*n31*n6*n81/n90 + n31*n71)/n134 + n44*n59*xF[2]*(pow(alpha, NP0*n0 - n5*n95)*n1*n5*n81/n90 + n1*n67)*(pow(alpha, NP0*n0 - n5*n95)*n31*n5*n81/n90 + n31*n67)/n133 + n44*n78*(pow(alpha, NP0*n0 - n4*n95)*n1*n4*n81/n90 + n1*n72)*(pow(alpha, NP0*n0 - n4*n95)*n31*n4*n81/n90 + n31*n72)/n132 + n18*n44*n46*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)*(pow(alpha, NP0*n0 - n0*n95)*n0*n31*n81/n90 + n0*n31*n32)/n131 + n44*n58*xF[6]*(pow(alpha, NP0*n0 - n9*n95)*n65*n81*n9/n90 - pow(alpha, n0*n17 - n9*n95)*n21*n27*n50/(n49*n91) + pow(alpha, n0*n17 - n9*n95)*n50*n65*n9/(n49*n91) + n87)/n128 + n89*(pow(alpha, NP0*n0 - n8*n95)*n65*n8*n81/n90 - pow(alpha, n0*n17 - n8*n95)*n21*n26*n50/(n49*n91) + pow(alpha, n0*n17 - n8*n95)*n50*n65*n8/(n49*n91) + n21*n26*n39)/n127 + n44*n60*xF[4]*(pow(alpha, NP0*n0 - n7*n95)*n65*n7*n81/n90 - pow(alpha, n0*n17 - n7*n95)*n21*n25*n50/(n49*n91) + pow(alpha, n0*n17 - n7*n95)*n50*n65*n7/(n49*n91) + n83)/n126 + n44*n59*xF[2]*(pow(alpha, NP0*n0 - n5*n95)*n5*n65*n81/n90 - pow(alpha, n0*n17 - n5*n95)*n21*n23*n50/(n49*n91) + pow(alpha, n0*n17 - n5*n95)*n5*n50*n65/(n49*n91) + n82)/n124 + n44*n78*(pow(alpha, NP0*n0 - n4*n95)*n4*n65*n81/n90 - pow(alpha, n0*n17 - n4*n95)*n21*n22*n50/(n49*n91) + pow(alpha, n0*n17 - n4*n95)*n4*n50*n65/(n49*n91) + n88)/n123) - n13*n219 + 4.0*n153*n172*n44/n64 + 2.0*n160 - 4.0*n202*n44) + pow(-n159 - n17*(1.0*n153*n44*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)/n64 + n169 - 0.5*xTj*(n147*n44*n58*(pow(alpha, NP0*n0 - n9*n95)*n1*n81*n9/n90 + n1*n70)*(pow(alpha, NP0*n0 - n9*n95)*n31*n81*n9/n90 + n31*n70) + n149*n44*n69*(pow(alpha, NP0*n0 - n11*n95)*n11*n65*n81/n90 + pow(alpha, n0*n17 - n11*n95)*n11*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n11*n95)*n21*n29*n50/(n49*n91) + n84) - n154*n44*(pow(alpha, NP0*n0 - n10*n95)*n1*n10*n81/n90 + n80)*(pow(alpha, NP0*n0 - n10*n95)*n10*n31*n81/n90 + n31*n75) - n155*n44*(pow(alpha, NP0*n0 - n10*n95)*n10*n65*n81/n90 + pow(alpha, n0*n17 - n10*n95)*n10*n50*n65/(n49*n91) - pow(alpha, n0*n17 - n10*n95)*n21*n28*n50/(n49*n91) + n85) + n156*n44*(pow(alpha, NP0*n0 - n6*n95)*n6*n65*n81/n90 - pow(alpha, n0*n17 - n6*n95)*n21*n24*n50/(n49*n91) + pow(alpha, n0*n17 - n6*n95)*n50*n6*n65/(n49*n91) + n86) + n160 + n161 + n162 + n163 + n164 + n165 + n166 + n167 + n168 + n209 + n210 + n211 + n212 + n213 + n214 + n215 + n216 + n217 + n219 - n44*n69*(pow(alpha, NP0*n0 - n11*n95)*n1*n11*n81/n90 + n79)*(pow(alpha, NP0*n0 - n11*n95)*n11*n31*n81/n90 + n31*n74)/n139 + n89*(pow(alpha, NP0*n0 - n8*n95)*n1*n8*n81/n90 + n1*n68)*(pow(alpha, NP0*n0 - n8*n95)*n31*n8*n81/n90 + n31*n68)/n136 + n44*n60*xF[4]*(pow(alpha, NP0*n0 - n7*n95)*n1*n7*n81/n90 + n1*n73)*(pow(alpha, NP0*n0 - n7*n95)*n31*n7*n81/n90 + n31*n73)/n135 + n44*n61*xF[3]*(pow(alpha, NP0*n0 - n6*n95)*n1*n6*n81/n90 + n1*n71)*(pow(alpha, NP0*n0 - n6*n95)*n31*n6*n81/n90 + n31*n71)/n134 + n44*n59*xF[2]*(pow(alpha, NP0*n0 - n5*n95)*n1*n5*n81/n90 + n1*n67)*(pow(alpha, NP0*n0 - n5*n95)*n31*n5*n81/n90 + n31*n67)/n133 + n44*n78*(pow(alpha, NP0*n0 - n4*n95)*n1*n4*n81/n90 + n1*n72)*(pow(alpha, NP0*n0 - n4*n95)*n31*n4*n81/n90 + n31*n72)/n132 + n18*n44*n46*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)*(pow(alpha, NP0*n0 - n0*n95)*n0*n31*n81/n90 + n0*n31*n32)/n131 + n44*n58*xF[6]*(pow(alpha, NP0*n0 - n9*n95)*n65*n81*n9/n90 - pow(alpha, n0*n17 - n9*n95)*n21*n27*n50/(n49*n91) + pow(alpha, n0*n17 - n9*n95)*n50*n65*n9/(n49*n91) + n87)/n128 + n89*(pow(alpha, NP0*n0 - n8*n95)*n65*n8*n81/n90 - pow(alpha, n0*n17 - n8*n95)*n21*n26*n50/(n49*n91) + pow(alpha, n0*n17 - n8*n95)*n50*n65*n8/(n49*n91) + n21*n26*n39)/n127 + n44*n60*xF[4]*(pow(alpha, NP0*n0 - n7*n95)*n65*n7*n81/n90 - pow(alpha, n0*n17 - n7*n95)*n21*n25*n50/(n49*n91) + pow(alpha, n0*n17 - n7*n95)*n50*n65*n7/(n49*n91) + n83)/n126 + n44*n59*xF[2]*(pow(alpha, NP0*n0 - n5*n95)*n5*n65*n81/n90 - pow(alpha, n0*n17 - n5*n95)*n21*n23*n50/(n49*n91) + pow(alpha, n0*n17 - n5*n95)*n5*n50*n65/(n49*n91) + n82)/n124 + n44*n78*(pow(alpha, NP0*n0 - n4*n95)*n4*n65*n81/n90 - pow(alpha, n0*n17 - n4*n95)*n21*n22*n50/(n49*n91) + pow(alpha, n0*n17 - n4*n95)*n4*n50*n65/(n49*n91) + n88)/n123) - 0.5*n44*n46*xF[0]*(pow(alpha, NP0*n0 - n0*n95)*n81/(n64*n90) + n32/n64)*(pow(alpha, NP0*n0 - n0*n95)*n0*n31*n81/n90 + n0*n31*n32)/n131 - 0.5*n44*n46*xF[0]*(pow(alpha, NP0*n0 - n0*n95)*n66*n81/n90 + n32*n66)/n122) - n237 - n194*n44*xF[0]/n122, -n13);
18564  NP_sqrt_base = fabs(NP_sqrt_base);
18565  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
18566  NT1 = n64*(n92 - log(-pow(alpha, NP1*n0)*n81 + 1));
18567  g0 = MW[1] - Mstar;
18568  g1 = MW[0] - Mstar;
18569  g2 = NT1 + 1;
18570  g3 = xPj - xTj;
18571  g4 = MW[2] - Mstar;
18572  g5 = MW[3] - Mstar;
18573  g6 = MW[4] - Mstar;
18574  g7 = MW[5] - Mstar;
18575  g8 = MW[6] - Mstar;
18576  g9 = MW[7] - Mstar;
18577  g10 = MW[8] - Mstar;
18578  g11 = xF[0] - xTj;
18579  g12 = xF[0] - xPj;
18580  g13 = -xTj;
18581  g14 = xPj/xF[1];
18582  g15 = pow(alpha, -g1);
18583  g16 = pow(alpha, -g0);
18584  g17 = pow(alpha, -g4);
18585  g18 = pow(alpha, -g5);
18586  g19 = pow(alpha, -g6);
18587  g20 = pow(alpha, -g7);
18588  g21 = pow(alpha, -g8);
18589  g22 = pow(alpha, -g9);
18590  g23 = pow(alpha, -g10);
18591  g24 = log(xF[0]/xF[1]);
18592  g25 = -g2;
18593  g26 = pow(alpha, NP1*g0);
18594  g27 = pow(alpha, NP1*g1);
18595  g28 = log(g15);
18596  g29 = pow(alpha, NP1*g4);
18597  g30 = pow(alpha, NP1*g5);
18598  g31 = pow(alpha, NP1*g6);
18599  g32 = pow(alpha, NP1*g7);
18600  g33 = pow(alpha, NP1*g8);
18601  g34 = pow(alpha, NP1*g9);
18602  g35 = pow(alpha, NP1*g10);
18603  g36 = -g24;
18604  g37 = g11/g3;
18605  g38 = g3/g11;
18606  g39 = -g26 + 1;
18607  g40 = -g26 + 1;
18608  g41 = -g27 + 1;
18609  g42 = -g29 + 1;
18610  g43 = -g30 + 1;
18611  g44 = -g31 + 1;
18612  g45 = -g32 + 1;
18613  g46 = -g33 + 1;
18614  g47 = -g34 + 1;
18615  g48 = -g35 + 1;
18616  g49 = -g27;
18617  g50 = -g29;
18618  g51 = -g30;
18619  g52 = -g31;
18620  g53 = -g32;
18621  g54 = -g33;
18622  g55 = -g34;
18623  g56 = -g35;
18624  g57 = -1.0*g24;
18625  g58 = -g3/g12;
18626  g59 = g12/(g3*xF[1]);
18627  g60 = pow(alpha, g0*g25) - 1;
18628  g61 = pow(alpha, g0*g25) - 1;
18629  g62 = pow(alpha, g1*g25) - 1;
18630  g63 = pow(alpha, g25*g4) - 1;
18631  g64 = pow(alpha, g25*g5) - 1;
18632  g65 = pow(alpha, g25*g6) - 1;
18633  g66 = pow(alpha, g25*g7) - 1;
18634  g67 = pow(alpha, g25*g8) - 1;
18635  g68 = pow(alpha, g25*g9) - 1;
18636  g69 = pow(alpha, g10*g25) - 1;
18637  g70 = -pow(alpha, g1*g25);
18638  g71 = -pow(alpha, g25*g4);
18639  g72 = -pow(alpha, g25*g5);
18640  g73 = -pow(alpha, g25*g6);
18641  g74 = -pow(alpha, g25*g7);
18642  g75 = -pow(alpha, g25*g8);
18643  g76 = -pow(alpha, g25*g9);
18644  g77 = -pow(alpha, g10*g25);
18645  g78 = g40 + g61;
18646  g79 = -g27 - g70;
18647  g80 = -g29 - g71;
18648  g81 = -g30 - g72;
18649  g82 = -g31 - g73;
18650  g83 = -g32 - g74;
18651  g84 = -g33 - g75;
18652  g85 = -g34 - g76;
18653  g86 = -g35 - g77;
18654  g87 = pow(alpha, g1*g25) + g49;
18655  g88 = g40 + g61;
18656  g89 = pow(alpha, g25*g4) + g50;
18657  g90 = pow(alpha, g25*g5) + g51;
18658  g91 = pow(alpha, g25*g6) + g52;
18659  g92 = pow(alpha, g25*g7) + g53;
18660  g93 = pow(alpha, g25*g8) + g54;
18661  g94 = pow(alpha, g25*g9) + g55;
18662  g95 = pow(alpha, g10*g25) + g56;
18663  g96 = xF[8]/g95;
18664  g97 = xF[0]/g87;
18665  g98 = xF[1]/g88;
18666  g99 = xF[2]/g89;
18667  g100 = xF[3]/g90;
18668  g101 = xF[6]/g93;
18669  g102 = xF[7]/g94;
18670  g103 = xF[4]/g91;
18671  g104 = xF[5]/g92;
18672  g105 = xF[1]/g78;
18673  g106 = xF[0]/g79;
18674  g107 = xF[4]/g82;
18675  g108 = xF[5]/g83;
18676  g109 = xF[7]/g85;
18677  g110 = xF[2]/g80;
18678  g111 = xF[3]/g81;
18679  g112 = xF[6]/g84;
18680  g113 = xF[8]/g86;
18681  g114 = g46/g84;
18682  g115 = g44/g82;
18683  g116 = g47/g85;
18684  g117 = g41/g79;
18685  g118 = g45/g83;
18686  g119 = g43/g81;
18687  g120 = g39/g78;
18688  g121 = g42/g80;
18689  g122 = g48/g86;
18690  g123 = g60/g78;
18691  g124 = g62/g79;
18692  g125 = g66/g83;
18693  g126 = g63/g80;
18694  g127 = g64/g81;
18695  g128 = g65/g82;
18696  g129 = g69/g86;
18697  g130 = g67/g84;
18698  g131 = g68/g85;
18699  g132 = log(g13*g59*g88/g40);
18700  g133 = log(g13*g59*g78/g39);
18701  g134 = log(g14*g37*g88/g61);
18702  g135 = 1.0*g132;
18703  g136 = log(g14*g37*g78/g60);
18704  g137 = 1.0*g134;
18705  g138 = -g100*g135*(g51 + 1) - g100*g137*(pow(alpha, g25*g5) - 1) - g101*g135*(g54 + 1) - g101*g137*(pow(alpha, g25*g8) - 1) - g102*g135*(g55 + 1) - g102*g137*(pow(alpha, g25*g9) - 1) - g103*g135*(g52 + 1) - g103*g137*(pow(alpha, g25*g6) - 1) - g104*g135*(g53 + 1) - g104*g137*(pow(alpha, g25*g7) - 1) - g135*g40*g98 - g135*g96*(g56 + 1) - g135*g97*(g49 + 1) - g135*g99*(g50 + 1) - g137*g61*g98 - g137*g96*(pow(alpha, g10*g25) - 1) - g137*g97*(pow(alpha, g1*g25) - 1) - g137*g99*(pow(alpha, g25*g4) - 1) - g57*xF[0] - g57*xF[1] - g57*xF[2] - g57*xF[3] - g57*xF[4] - g57*xF[5] - g57*xF[6] - g57*xF[7] - g57*xF[8];
18706  LpF = xF[0]*(g15 + 1.0)*(g117*g133 + g124*g136 + g36)/(g28*(g15 - 1.0)) + xF[1]*(g16 + 1.0)*(g120*g133 + g123*g136 + g36)/(g28*(g16 - 1.0)) + xF[2]*(g17 + 1.0)*(g121*g133 + g126*g136 + g36)/(g28*(g17 - 1.0)) + xF[3]*(g18 + 1.0)*(g119*g133 + g127*g136 + g36)/(g28*(g18 - 1.0)) + xF[4]*(g19 + 1.0)*(g115*g133 + g128*g136 + g36)/(g28*(g19 - 1.0)) + xF[5]*(g20 + 1.0)*(g118*g133 + g125*g136 + g36)/(g28*(g20 - 1.0)) + xF[6]*(g21 + 1.0)*(g114*g133 + g130*g136 + g36)/(g28*(g21 - 1.0)) + xF[7]*(g22 + 1.0)*(g116*g133 + g131*g136 + g36)/(g28*(g22 - 1.0)) + xF[8]*(g23 + 1.0)*(g122*g133 + g129*g136 + g36)/(g28*(g23 - 1.0));
18707  PpF = g37;
18708  TpF = -g12/g3;
18709  SWUpF = g138;
18710  SWUpP = g138*g38;
18711  xP[0] = g106*g38*g62;
18712  xP[1] = g105*g38*g60;
18713  xP[2] = g110*g38*g63;
18714  xP[3] = g111*g38*g64;
18715  xP[4] = g107*g38*g65;
18716  xP[5] = g108*g38*g66;
18717  xP[6] = g112*g38*g67;
18718  xP[7] = g109*g38*g68;
18719  xP[8] = g113*g38*g69;
18720  xT[0] = g106*g41*g58;
18721  xT[1] = g105*g39*g58;
18722  xT[2] = g110*g42*g58;
18723  xT[3] = g111*g43*g58;
18724  xT[4] = g107*g44*g58;
18725  xT[5] = g108*g45*g58;
18726  xT[6] = g112*g46*g58;
18727  xT[7] = g109*g47*g58;
18728  xT[8] = g113*g48*g58;
18729  break;
18730  case 10:
18731  n0 = MW[0] - Mstar;
18732  n1 = log(alpha);
18733  n2 = xPj - xTj;
18734  n3 = xF[0] - xPj;
18735  n4 = MW[1] - Mstar;
18736  n5 = MW[2] - Mstar;
18737  n6 = MW[3] - Mstar;
18738  n7 = MW[4] - Mstar;
18739  n8 = MW[5] - Mstar;
18740  n9 = MW[6] - Mstar;
18741  n10 = MW[7] - Mstar;
18742  n11 = MW[8] - Mstar;
18743  n12 = MW[9] - Mstar;
18744  n13 = log(xTj);
18745  n14 = -2;
18746  n15 = xF[0]*xPj;
18747  n16 = -Mstar;
18748  n17 = -xPj;
18749  n18 = -NP0*n14;
18750  n19 = -xTj;
18751  n20 = -n14*xF[9];
18752  n21 = pow(n0, -n14);
18753  n22 = pow(n1, -n14);
18754  n23 = pow(n4, -n14);
18755  n24 = pow(n5, -n14);
18756  n25 = pow(n6, -n14);
18757  n26 = pow(n7, -n14);
18758  n27 = pow(n8, -n14);
18759  n28 = pow(n9, -n14);
18760  n29 = pow(n10, -n14);
18761  n30 = pow(n11, -n14);
18762  n31 = pow(n12, -n14);
18763  n32 = Mstar*n1;
18764  n33 = -n1*n14;
18765  n34 = pow(alpha, NP0*n0);
18766  n35 = n15 + n19*xF[0];
18767  n36 = n15 + n17*xTj;
18768  n37 = pow(alpha, NP0*n4);
18769  n38 = pow(alpha, NP0*n5);
18770  n39 = pow(alpha, NP0*n6);
18771  n40 = pow(alpha, NP0*n7);
18772  n41 = pow(alpha, NP0*n8);
18773  n42 = pow(alpha, NP0*n9);
18774  n43 = pow(alpha, NP0*n10);
18775  n44 = pow(alpha, NP0*n11);
18776  n45 = pow(alpha, NP0*n12);
18777  n46 = -MW[0]*n1;
18778  n47 = n2/n3;
18779  n48 = -n22;
18780  n49 = -n34 + 1;
18781  n50 = -n37 + 1;
18782  n51 = pow(alpha, n0*n18);
18783  n52 = pow(n35, -n14);
18784  n53 = pow(n36, -n14);
18785  n54 = -n38 + 1;
18786  n55 = -n39 + 1;
18787  n56 = -n40 + 1;
18788  n57 = -n41 + 1;
18789  n58 = -n42 + 1;
18790  n59 = -n43 + 1;
18791  n60 = -n44 + 1;
18792  n61 = -n45 + 1;
18793  n62 = -n34;
18794  n63 = -n47;
18795  n64 = 1/(n0*n1);
18796  n65 = n0*n22;
18797  n66 = n57*xF[5];
18798  n67 = n61*xF[9];
18799  n68 = n55*xF[3];
18800  n69 = n38*n5;
18801  n70 = n41*n8;
18802  n71 = n59*xF[7];
18803  n72 = n50*xF[1];
18804  n73 = n60*xF[8];
18805  n74 = n42*n9;
18806  n75 = n39*n6;
18807  n76 = n37*n4;
18808  n77 = n40*n7;
18809  n78 = n58*xF[6];
18810  n79 = n10*n43;
18811  n80 = n11*n44;
18812  n81 = log((-1.0 + xPj/xF[0])/n2);
18813  n82 = n1*n12*n45;
18814  n83 = n1*n80;
18815  n84 = n0*n1*n34;
18816  n85 = n1*n79;
18817  n86 = n36/n35;
18818  n87 = n21*n51;
18819  n88 = n22*n24*n38;
18820  n89 = n22*n26*n40;
18821  n90 = n21*n22*n34;
18822  n91 = n22*n30*n44;
18823  n92 = n22*n31*n45;
18824  n93 = n22*n29*n43;
18825  n94 = n22*n25*n39;
18826  n95 = n22*n28*n42;
18827  n96 = n22*n23*n37;
18828  n97 = n62*n86 + 1;
18829  n98 = pow(n97, -n14);
18830  n99 = n13 + n32 + n46 + n81;
18831  n100 = n34*n86/n97;
18832  n101 = n64*(n99 - log(n97)) + 1;
18833  n102 = pow(alpha, n0*n101);
18834  n103 = pow(alpha, n101*n4);
18835  n104 = pow(alpha, n101*n5);
18836  n105 = pow(alpha, n101*n6);
18837  n106 = pow(alpha, n101*n7);
18838  n107 = pow(alpha, n101*n8);
18839  n108 = pow(alpha, n101*n9);
18840  n109 = pow(alpha, n10*n101);
18841  n110 = pow(alpha, n101*n11);
18842  n111 = pow(alpha, n101*n12);
18843  n112 = n4/n103;
18844  n113 = n12/n111;
18845  n114 = n11/n110;
18846  n115 = n7/n106;
18847  n116 = n6/n105;
18848  n117 = n10/n109;
18849  n118 = n9/n108;
18850  n119 = n8/n107;
18851  n120 = n0/n102;
18852  n121 = n5/n104;
18853  n122 = n28/n108;
18854  n123 = n21/n102;
18855  n124 = n24/n104;
18856  n125 = n0*n121;
18857  n126 = n49 - 1 + 1.0/n102;
18858  n127 = n50 - 1 + 1.0/n103;
18859  n128 = n54 - 1 + 1.0/n104;
18860  n129 = n55 - 1 + 1.0/n105;
18861  n130 = n56 - 1 + 1.0/n106;
18862  n131 = n57 - 1 + 1.0/n107;
18863  n132 = n58 - 1 + 1.0/n108;
18864  n133 = n59 - 1 + 1.0/n109;
18865  n134 = n60 - 1 + 1.0/n110;
18866  n135 = n61 - 1 + 1.0/n111;
18867  n136 = pow(n126, -n14);
18868  n137 = pow(n127, -n14);
18869  n138 = pow(n128, -n14);
18870  n139 = pow(n129, -n14);
18871  n140 = pow(n130, -n14);
18872  n141 = pow(n131, -n14);
18873  n142 = pow(n132, -n14);
18874  n143 = pow(n133, -n14);
18875  n144 = pow(n134, -n14);
18876  n145 = pow(n135, -n14);
18877  n146 = pow(n126, 3);
18878  n147 = pow(n127, 3);
18879  n148 = pow(n128, 3);
18880  n149 = pow(n129, 3);
18881  n150 = pow(n130, 3);
18882  n151 = pow(n131, 3);
18883  n152 = pow(n132, 3);
18884  n153 = pow(n133, 3);
18885  n154 = pow(n134, 3);
18886  n155 = pow(n135, 3);
18887  n156 = xF[2]/n128;
18888  n157 = xF[9]/n135;
18889  n158 = xF[0]/n126;
18890  n159 = xF[8]/n134;
18891  n160 = xF[6]/n132;
18892  n161 = xF[7]/n133;
18893  n162 = xF[1]/n127;
18894  n163 = xF[4]/n130;
18895  n164 = xF[3]/n129;
18896  n165 = xF[0]/n136;
18897  n166 = -1/n140;
18898  n167 = n1*xF[5]/n131;
18899  n168 = n1*n164;
18900  n169 = n54/n148;
18901  n170 = n54/n138;
18902  n171 = n49*xF[0]/n146;
18903  n172 = n22*n27*n41*xF[5]/n131;
18904  n173 = n0*n1*n158*n47*n62;
18905  n174 = n158*n47*n90;
18906  n175 = n162*n47*n96;
18907  n176 = n156*n47*n88;
18908  n177 = n164*n47*n94;
18909  n178 = n163*n47*n89;
18910  n179 = n172*n47;
18911  n180 = n160*n47*n95;
18912  n181 = n161*n47*n93;
18913  n182 = n159*n47*n91;
18914  n183 = n157*n47*n92;
18915  n184 = 0.5*n174;
18916  n185 = 1 + n86/(n102*n97);
18917  n186 = n185*n49;
18918  n187 = n84 + n84*n86/(n102*n97);
18919  n188 = n1*n100*n112 + n1*n76;
18920  n189 = n1*n100*n121 + n1*n69;
18921  n190 = n1*n100*n116 + n1*n75;
18922  n191 = n1*n100*n115 + n1*n77;
18923  n192 = n1*n100*n119 + n1*n70;
18924  n193 = n1*n100*n118 + n1*n74;
18925  n194 = n1*n100*n117 + n85;
18926  n195 = n1*n100*n114 + n83;
18927  n196 = n1*n100*n113 + n82;
18928  n197 = pow(n187, -n14);
18929  n198 = pow(n188, -n14);
18930  n199 = pow(n189, -n14);
18931  n200 = pow(n190, -n14);
18932  n201 = pow(n191, -n14);
18933  n202 = pow(n192, -n14);
18934  n203 = pow(n193, -n14);
18935  n204 = pow(n194, -n14);
18936  n205 = pow(n195, -n14);
18937  n206 = pow(n196, -n14);
18938  n207 = n189*xF[2];
18939  n208 = n0*n33*n34 + n100*n120*n33;
18940  n209 = n199*xF[2];
18941  n210 = n90 + n86*n90/(n102*n97);
18942  n211 = n100*n123*n48 + n21*n34*n48;
18943  n212 = n187*n49;
18944  n213 = n191*n56*xF[4];
18945  n214 = n210*n49;
18946  n215 = n211*n49;
18947  n216 = n192/n141;
18948  n217 = n188/n137;
18949  n218 = n190/n139;
18950  n219 = n194/n143;
18951  n220 = n195/n144;
18952  n221 = n196/n145;
18953  n222 = n204/n153;
18954  n223 = n200/n149;
18955  n224 = n205/n154;
18956  n225 = n193*xF[6]/n142;
18957  n226 = n206/n155;
18958  n227 = n191*xF[4]/n140;
18959  n228 = n198/n147;
18960  n229 = n203/n152;
18961  n230 = n201*n56*xF[4]/n150;
18962  n231 = n165*n212*n47;
18963  n232 = n0*n165*n33*n34*n47*(pow(alpha, NP0*n0 - n0*n101)*n0*n1*n86/n97 + n84);
18964  n233 = n33*n47*n76*xF[1]*(pow(alpha, NP0*n0 - n101*n4)*n1*n4*n86/n97 + n1*n76)/n137;
18965  n234 = n33*n47*n69*xF[2]*(pow(alpha, NP0*n0 - n101*n5)*n1*n5*n86/n97 + n1*n69)/n138;
18966  n235 = n33*n47*n75*xF[3]*(pow(alpha, NP0*n0 - n101*n6)*n1*n6*n86/n97 + n1*n75)/n139;
18967  n236 = n33*n47*n77*xF[4]*(pow(alpha, NP0*n0 - n101*n7)*n1*n7*n86/n97 + n1*n77)/n140;
18968  n237 = n33*n47*n70*xF[5]*(pow(alpha, NP0*n0 - n101*n8)*n1*n8*n86/n97 + n1*n70)/n141;
18969  n238 = n33*n47*n74*xF[6]*(pow(alpha, NP0*n0 - n101*n9)*n1*n86*n9/n97 + n1*n74)/n142;
18970  n239 = n33*n47*n79*xF[7]*(pow(alpha, NP0*n0 - n10*n101)*n1*n10*n86/n97 + n85)/n143;
18971  n240 = n33*n47*n80*xF[8]*(pow(alpha, NP0*n0 - n101*n11)*n1*n11*n86/n97 + n83)/n144;
18972  n241 = n20*n47*n82*(pow(alpha, NP0*n0 - n101*n12)*n1*n12*n86/n97 + n82)/n145;
18973  n242 = 1.0*n165*n187*n47*n84;
18974  n243 = 0.5*n187*n208;
18975  n244 = n184 + n242;
18976  n245 = n100*n112*n65 + n112*n51*n53*n65/(n52*n98) + n96 + n23*n48*n51*n53/(n103*n52*n98);
18977  n246 = n100*n121*n65 + n121*n51*n53*n65/(n52*n98) + n124*n48*n51*n53/(n52*n98) + n88;
18978  n247 = n100*n116*n65 + n116*n51*n53*n65/(n52*n98) + n94 + n25*n48*n51*n53/(n105*n52*n98);
18979  n248 = n100*n115*n65 + n115*n51*n53*n65/(n52*n98) + n89 + n26*n48*n51*n53/(n106*n52*n98);
18980  n249 = n100*n119*n65 + n119*n51*n53*n65/(n52*n98) + n22*n27*n41 + n27*n48*n51*n53/(n107*n52*n98);
18981  n250 = n100*n118*n65 + n118*n51*n53*n65/(n52*n98) + n122*n48*n51*n53/(n52*n98) + n95;
18982  n251 = n100*n117*n65 + n117*n51*n53*n65/(n52*n98) + n93 + n29*n48*n51*n53/(n109*n52*n98);
18983  n252 = n100*n114*n65 + n114*n51*n53*n65/(n52*n98) + n91 + n30*n48*n51*n53/(n110*n52*n98);
18984  n253 = n100*n113*n65 + n113*n51*n53*n65/(n52*n98) + n92 + n31*n48*n51*n53/(n111*n52*n98);
18985  n254 = n63*n72*(pow(alpha, n0*n18 - n101*n4)*n23*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n4)*n4*n53*n65/(n52*n98) + n100*n112*n65 + n96)/n137;
18986  n255 = n63*n68*(pow(alpha, n0*n18 - n101*n6)*n25*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n6)*n53*n6*n65/(n52*n98) + n100*n116*n65 + n94)/n139;
18987  n256 = n56*n63*xF[4]*(pow(alpha, n0*n18 - n101*n7)*n26*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n7)*n53*n65*n7/(n52*n98) + n100*n115*n65 + n89)/n140;
18988  n257 = n63*n66*(pow(alpha, n0*n18 - n101*n8)*n27*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n8)*n53*n65*n8/(n52*n98) + n100*n119*n65 + n22*n27*n41)/n141;
18989  n258 = n63*n71*(pow(alpha, n0*n18 - n10*n101)*n10*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n10*n101)*n29*n48*n53/(n52*n98) + n100*n117*n65 + n93)/n143;
18990  n259 = n63*n73*(pow(alpha, n0*n18 - n101*n11)*n11*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n11)*n30*n48*n53/(n52*n98) + n100*n114*n65 + n91)/n144;
18991  n260 = n63*n67*(pow(alpha, n0*n18 - n101*n12)*n12*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n12)*n31*n48*n53/(n52*n98) + n100*n113*n65 + n92)/n145;
18992  n261 = xTj*(n1*n156*n47*n69 + n1*n160*n47*n74 + n1*n162*n47*n76 + n1*n163*n47*n77 + n157*n47*n82 + n158*n47*n84 + n159*n47*n83 + n161*n47*n85 + n165*n212*n63 + n167*n47*n70 + n168*n47*n75 + n170*n207*n63 + n216*n63*n66 + n217*n63*n72 + n218*n63*n68 + n219*n63*n71 + n220*n63*n73 + n221*n63*n67 + n193*n63*n78/n142 + n213*n63/n140);
18993  n262 = n173 + n231 + n261;
18994  n263 = n174 + n175 + n176 + n177 + n178 + n179 + n180 + n181 + n182 + n183 + n232 + n233 + n234 + n235 + n236 + n237 + n238 + n239 + n240 + n241 + n254 + n255 + n256 + n257 + n258 + n259 + n260;
18995  n264 = n165*n215*n47 + n169*n207*n63*(n100*n121*n33 + n33*n69) + n170*n47*xF[2]*(pow(alpha, n0*n18 - n101*n5)*n0*n48*n5*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n5)*n22*n24*n53/(n52*n98) + n100*n125*n48 + n24*n38*n48) + n171*n187*n208*n63 + n263 + n196*n63*n67*(n100*n113*n33 + n12*n33*n45)/n155 + n195*n63*n73*(n100*n114*n33 + n33*n80)/n154 + n194*n63*n71*(n100*n117*n33 + n33*n79)/n153 + n193*n63*n78*(n100*n118*n33 + n33*n74)/n152 + n192*n63*n66*(n100*n119*n33 + n33*n70)/n151 + n213*n63*(n100*n115*n33 + n33*n77)/n150 + n190*n63*n68*(n100*n116*n33 + n33*n75)/n149 + n188*n63*n72*(n100*n112*n33 + n33*n76)/n147 + n47*n78*(pow(alpha, n0*n18 - n101*n9)*n0*n48*n53*n9/(n52*n98) + pow(alpha, n0*n18 - n101*n9)*n22*n28*n53/(n52*n98) + n0*n100*n118*n48 + n28*n42*n48)/n142;
18996  NP_b = -n165*n186*n47*n84 - n173 - n18*(-0.5*n165*n47*n49*(pow(alpha, NP0*n0 - n0*n101)*n21*n22*n86/n97 + n90) + 1.0*n165*n47*n84*(pow(alpha, NP0*n0 - n0*n101)*n0*n1*n86/n97 + n84) - 1.0*n171*n197*n47 + n184 - 0.5*xTj*(n14*n169*n209*n47 + n14*n171*n197*n47 + n14*n222*n47*n71 + n14*n223*n47*n68 + n14*n224*n47*n73 + n14*n226*n47*n67 + n14*n228*n47*n72 + n14*n229*n47*n78 + n14*n230*n47 + n14*n202*n47*n66/n151 + n165*n49*n63*(pow(alpha, NP0*n0 - n0*n101)*n21*n22*n86/n97 + n90) + n170*n63*xF[2]*(pow(alpha, NP0*n0 - n101*n5)*n5*n65*n86/n97 + pow(alpha, n0*n18 - n101*n5)*n24*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n5)*n5*n53*n65/(n52*n98) + n88) + n174 + n175 + n176 + n177 + n178 + n179 + n180 + n181 + n182 + n183 + n232 + n233 + n234 + n235 + n236 + n237 + n238 + n239 + n240 + n241 + n63*n67*(pow(alpha, NP0*n0 - n101*n12)*n12*n65*n86/n97 + pow(alpha, n0*n18 - n101*n12)*n12*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n12)*n31*n48*n53/(n52*n98) + n92)/n145 + n63*n73*(pow(alpha, NP0*n0 - n101*n11)*n11*n65*n86/n97 + pow(alpha, n0*n18 - n101*n11)*n11*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n11)*n30*n48*n53/(n52*n98) + n91)/n144 + n63*n71*(pow(alpha, NP0*n0 - n10*n101)*n10*n65*n86/n97 + pow(alpha, n0*n18 - n10*n101)*n10*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n10*n101)*n29*n48*n53/(n52*n98) + n93)/n143 + n63*n78*(pow(alpha, NP0*n0 - n101*n9)*n65*n86*n9/n97 + pow(alpha, n0*n18 - n101*n9)*n28*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n9)*n53*n65*n9/(n52*n98) + n95)/n142 + n63*n66*(pow(alpha, NP0*n0 - n101*n8)*n65*n8*n86/n97 + pow(alpha, n0*n18 - n101*n8)*n27*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n8)*n53*n65*n8/(n52*n98) + n22*n27*n41)/n141 + n56*n63*xF[4]*(pow(alpha, NP0*n0 - n101*n7)*n65*n7*n86/n97 + pow(alpha, n0*n18 - n101*n7)*n26*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n7)*n53*n65*n7/(n52*n98) + n89)/n140 + n63*n68*(pow(alpha, NP0*n0 - n101*n6)*n6*n65*n86/n97 + pow(alpha, n0*n18 - n101*n6)*n25*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n6)*n53*n6*n65/(n52*n98) + n94)/n139 + n63*n72*(pow(alpha, NP0*n0 - n101*n4)*n4*n65*n86/n97 + pow(alpha, n0*n18 - n101*n4)*n23*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n4)*n4*n53*n65/(n52*n98) + n96)/n137)) - n47*xTj*(n1*n156*n69 + n1*n160*n74 + n1*n162*n76 + n1*n163*n77 + n157*n82 + n158*n84 + n159*n83 + n161*n85 - n165*n212 + n166*n213 + n167*n70 + n168*n75 - n170*n207 - n216*n66 - n217*n72 - n218*n68 - n219*n71 - n220*n73 - n221*n67 - n193*n78/n142);
18997  NP_2a = -n47*(n14*n171*pow(n185, -n14)*n48*n87 - 1.0*n158*n90 - 2.0*n165*n185*n22*n87 + n165*n186*n90 + 1.0*xTj*(n0*n165*n33*n34*(pow(alpha, NP0*n0 - n0*n101)*n0*n1*n86/n97 + n84) + n14*n169*n209 + n14*n171*n197 + n14*n222*n71 + n14*n223*n68 + n14*n224*n73 + n14*n226*n67 + n14*n228*n72 + n14*n229*n78 + n14*n230 + n14*n202*n66/n151 + n156*n88 + n157*n92 + n158*n90 + n159*n91 + n160*n95 + n161*n93 + n162*n96 + n163*n89 + n164*n94 - n165*n214 + n166*n56*xF[4]*(pow(alpha, n0*n18 - n101*n7)*n26*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n7)*n53*n65*n7/(n52*n98) + n100*n115*n65 + n89) - n170*xF[2]*(pow(alpha, n0*n18 - n101*n5)*n24*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n5)*n5*n53*n65/(n52*n98) + n100*n121*n65 + n88) + n172 + n20*n82*(pow(alpha, NP0*n0 - n101*n12)*n1*n12*n86/n97 + n82)/n145 - n67*(pow(alpha, n0*n18 - n101*n12)*n12*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n12)*n31*n48*n53/(n52*n98) + n100*n113*n65 + n92)/n145 + n33*n80*xF[8]*(pow(alpha, NP0*n0 - n101*n11)*n1*n11*n86/n97 + n83)/n144 - n73*(pow(alpha, n0*n18 - n101*n11)*n11*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n11)*n30*n48*n53/(n52*n98) + n100*n114*n65 + n91)/n144 + n33*n79*xF[7]*(pow(alpha, NP0*n0 - n10*n101)*n1*n10*n86/n97 + n85)/n143 - n71*(pow(alpha, n0*n18 - n10*n101)*n10*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n10*n101)*n29*n48*n53/(n52*n98) + n100*n117*n65 + n93)/n143 + n33*n74*xF[6]*(pow(alpha, NP0*n0 - n101*n9)*n1*n86*n9/n97 + n1*n74)/n142 - n78*(pow(alpha, n0*n18 - n101*n9)*n28*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n9)*n53*n65*n9/(n52*n98) + n100*n118*n65 + n95)/n142 + n33*n70*xF[5]*(pow(alpha, NP0*n0 - n101*n8)*n1*n8*n86/n97 + n1*n70)/n141 - n66*(pow(alpha, n0*n18 - n101*n8)*n27*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n8)*n53*n65*n8/(n52*n98) + n100*n119*n65 + n22*n27*n41)/n141 + n33*n77*xF[4]*(pow(alpha, NP0*n0 - n101*n7)*n1*n7*n86/n97 + n1*n77)/n140 + n33*n75*xF[3]*(pow(alpha, NP0*n0 - n101*n6)*n1*n6*n86/n97 + n1*n75)/n139 - n68*(pow(alpha, n0*n18 - n101*n6)*n25*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n6)*n53*n6*n65/(n52*n98) + n100*n116*n65 + n94)/n139 + n33*n69*xF[2]*(pow(alpha, NP0*n0 - n101*n5)*n1*n5*n86/n97 + n1*n69)/n138 + n33*n76*xF[1]*(pow(alpha, NP0*n0 - n101*n4)*n1*n4*n86/n97 + n1*n76)/n137 - n72*(pow(alpha, n0*n18 - n101*n4)*n23*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n4)*n4*n53*n65/(n52*n98) + n100*n112*n65 + n96)/n137));
18998  NP_sqrt_base = (-NP0*n262 - n19*(-n47*n49*xF[0]/(n49 - 1 + pow(alpha, -n0*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n54*xF[2]/(n54 - 1 + pow(alpha, -n5*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n56*xF[4]/(n56 - 1 + pow(alpha, -n7*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n66/(n57 - 1 + pow(alpha, -n8*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n67/(n61 - 1 + pow(alpha, -n12*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n68/(n55 - 1 + pow(alpha, -n6*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n71/(n59 - 1 + pow(alpha, -n10*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n72/(n50 - 1 + pow(alpha, -n4*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n73/(n60 - 1 + pow(alpha, -n11*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1))) - n47*n78/(n58 - 1 + pow(alpha, -n9*(n64*(n99 - log(n36*n62/(n15 - xF[0]*xTj) + 1)) + 1)))) - n49*n63*xF[0]/n126 - pow(NP0, -n14)*(1.0*n165*n187*n47*n84 + 0.5*n165*n215*n47 - n171*n243*n47 + 0.5*n174 - 0.5*n264*xTj))*(-n14*n19*(n165*n47*n49*(pow(alpha, NP0*n0 - n0*n101)*n21*n22*(-n15 + n17*n19)/(n35*n97) + n21*n34*n48) + n169*n63*xF[2]*(pow(alpha, NP0*n0 - n101*n5)*n1*n5*n86/n97 + n1*n69)*(pow(alpha, NP0*n0 - n101*n5)*n33*n5*n86/n97 + n33*n69) + n170*n47*xF[2]*(pow(alpha, NP0*n0 - n101*n5)*n0*n48*n5*n86/n97 + pow(alpha, n0*n18 - n101*n5)*n0*n48*n5*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n5)*n22*n24*n53/(n52*n98) + n24*n38*n48) + n171*n63*(pow(alpha, NP0*n0 - n0*n101)*n0*n1*n86/n97 + n84)*(pow(alpha, NP0*n0 - n0*n101)*n0*n33*n86/n97 + n0*n33*n34) + n174 + n175 + n176 + n177 + n178 + n179 + n180 + n181 + n182 + n183 + n232 + n233 + n234 + n235 + n236 + n237 + n238 + n239 + n240 + n241 + n63*n67*(pow(alpha, NP0*n0 - n101*n12)*n1*n12*n86/n97 + n82)*(pow(alpha, NP0*n0 - n101*n12)*n12*n33*n86/n97 + n12*n33*n45)/n155 + n63*n73*(pow(alpha, NP0*n0 - n101*n11)*n1*n11*n86/n97 + n83)*(pow(alpha, NP0*n0 - n101*n11)*n11*n33*n86/n97 + n33*n80)/n154 + n63*n71*(pow(alpha, NP0*n0 - n10*n101)*n1*n10*n86/n97 + n85)*(pow(alpha, NP0*n0 - n10*n101)*n10*n33*n86/n97 + n33*n79)/n153 + n63*n78*(pow(alpha, NP0*n0 - n101*n9)*n1*n86*n9/n97 + n1*n74)*(pow(alpha, NP0*n0 - n101*n9)*n33*n86*n9/n97 + n33*n74)/n152 + n63*n66*(pow(alpha, NP0*n0 - n101*n8)*n1*n8*n86/n97 + n1*n70)*(pow(alpha, NP0*n0 - n101*n8)*n33*n8*n86/n97 + n33*n70)/n151 + n56*n63*xF[4]*(pow(alpha, NP0*n0 - n101*n7)*n1*n7*n86/n97 + n1*n77)*(pow(alpha, NP0*n0 - n101*n7)*n33*n7*n86/n97 + n33*n77)/n150 + n63*n68*(pow(alpha, NP0*n0 - n101*n6)*n1*n6*n86/n97 + n1*n75)*(pow(alpha, NP0*n0 - n101*n6)*n33*n6*n86/n97 + n33*n75)/n149 + n63*n72*(pow(alpha, NP0*n0 - n101*n4)*n1*n4*n86/n97 + n1*n76)*(pow(alpha, NP0*n0 - n101*n4)*n33*n4*n86/n97 + n33*n76)/n147 + n63*n67*(pow(alpha, NP0*n0 - n101*n12)*n12*n65*n86/n97 + pow(alpha, n0*n18 - n101*n12)*n12*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n12)*n31*n48*n53/(n52*n98) + n92)/n145 + n63*n73*(pow(alpha, NP0*n0 - n101*n11)*n11*n65*n86/n97 + pow(alpha, n0*n18 - n101*n11)*n11*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n11)*n30*n48*n53/(n52*n98) + n91)/n144 + n63*n71*(pow(alpha, NP0*n0 - n10*n101)*n10*n65*n86/n97 + pow(alpha, n0*n18 - n10*n101)*n10*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n10*n101)*n29*n48*n53/(n52*n98) + n93)/n143 + n47*n78*(pow(alpha, NP0*n0 - n101*n9)*n0*n48*n86*n9/n97 + pow(alpha, n0*n18 - n101*n9)*n0*n48*n53*n9/(n52*n98) + pow(alpha, n0*n18 - n101*n9)*n22*n28*n53/(n52*n98) + n28*n42*n48)/n142 + n63*n66*(pow(alpha, NP0*n0 - n101*n8)*n65*n8*n86/n97 + pow(alpha, n0*n18 - n101*n8)*n27*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n8)*n53*n65*n8/(n52*n98) + n22*n27*n41)/n141 + n56*n63*xF[4]*(pow(alpha, NP0*n0 - n101*n7)*n65*n7*n86/n97 + pow(alpha, n0*n18 - n101*n7)*n26*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n7)*n53*n65*n7/(n52*n98) + n89)/n140 + n63*n68*(pow(alpha, NP0*n0 - n101*n6)*n6*n65*n86/n97 + pow(alpha, n0*n18 - n101*n6)*n25*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n6)*n53*n6*n65/(n52*n98) + n94)/n139 + n63*n72*(pow(alpha, NP0*n0 - n101*n4)*n4*n65*n86/n97 + pow(alpha, n0*n18 - n101*n4)*n23*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n4)*n4*n53*n65/(n52*n98) + n96)/n137) + 4.0*n165*n187*n47*n84 + 2.0*n165*n215*n47 - 4.0*n171*n197*n47 + 2.0*n174) + pow(-n18*(0.5*n165*n47*n49*(pow(alpha, NP0*n0 - n0*n101)*n21*n22*(-n15 + n17*n19)/(n35*n97) + n21*n34*n48) + 1.0*n165*n47*n84*(pow(alpha, NP0*n0 - n0*n101)*n0*n1*n86/n97 + n84) - 0.5*n171*n47*(pow(alpha, NP0*n0 - n0*n101)*n0*n1*n86/n97 + n84)*(pow(alpha, NP0*n0 - n0*n101)*n0*n33*n86/n97 + n0*n33*n34) + n184 - 0.5*xTj*(n165*n47*n49*(pow(alpha, NP0*n0 - n0*n101)*n21*n22*(-n15 + n17*n19)/(n35*n97) + n21*n34*n48) + n169*n63*xF[2]*(pow(alpha, NP0*n0 - n101*n5)*n1*n5*n86/n97 + n1*n69)*(pow(alpha, NP0*n0 - n101*n5)*n33*n5*n86/n97 + n33*n69) + n170*n47*xF[2]*(pow(alpha, NP0*n0 - n101*n5)*n0*n48*n5*n86/n97 + pow(alpha, n0*n18 - n101*n5)*n0*n48*n5*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n5)*n22*n24*n53/(n52*n98) + n24*n38*n48) + n171*n63*(pow(alpha, NP0*n0 - n0*n101)*n0*n1*n86/n97 + n84)*(pow(alpha, NP0*n0 - n0*n101)*n0*n33*n86/n97 + n0*n33*n34) + n174 + n175 + n176 + n177 + n178 + n179 + n180 + n181 + n182 + n183 + n232 + n233 + n234 + n235 + n236 + n237 + n238 + n239 + n240 + n241 + n63*n67*(pow(alpha, NP0*n0 - n101*n12)*n1*n12*n86/n97 + n82)*(pow(alpha, NP0*n0 - n101*n12)*n12*n33*n86/n97 + n12*n33*n45)/n155 + n63*n73*(pow(alpha, NP0*n0 - n101*n11)*n1*n11*n86/n97 + n83)*(pow(alpha, NP0*n0 - n101*n11)*n11*n33*n86/n97 + n33*n80)/n154 + n63*n71*(pow(alpha, NP0*n0 - n10*n101)*n1*n10*n86/n97 + n85)*(pow(alpha, NP0*n0 - n10*n101)*n10*n33*n86/n97 + n33*n79)/n153 + n63*n78*(pow(alpha, NP0*n0 - n101*n9)*n1*n86*n9/n97 + n1*n74)*(pow(alpha, NP0*n0 - n101*n9)*n33*n86*n9/n97 + n33*n74)/n152 + n63*n66*(pow(alpha, NP0*n0 - n101*n8)*n1*n8*n86/n97 + n1*n70)*(pow(alpha, NP0*n0 - n101*n8)*n33*n8*n86/n97 + n33*n70)/n151 + n56*n63*xF[4]*(pow(alpha, NP0*n0 - n101*n7)*n1*n7*n86/n97 + n1*n77)*(pow(alpha, NP0*n0 - n101*n7)*n33*n7*n86/n97 + n33*n77)/n150 + n63*n68*(pow(alpha, NP0*n0 - n101*n6)*n1*n6*n86/n97 + n1*n75)*(pow(alpha, NP0*n0 - n101*n6)*n33*n6*n86/n97 + n33*n75)/n149 + n63*n72*(pow(alpha, NP0*n0 - n101*n4)*n1*n4*n86/n97 + n1*n76)*(pow(alpha, NP0*n0 - n101*n4)*n33*n4*n86/n97 + n33*n76)/n147 + n63*n67*(pow(alpha, NP0*n0 - n101*n12)*n12*n65*n86/n97 + pow(alpha, n0*n18 - n101*n12)*n12*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n12)*n31*n48*n53/(n52*n98) + n92)/n145 + n63*n73*(pow(alpha, NP0*n0 - n101*n11)*n11*n65*n86/n97 + pow(alpha, n0*n18 - n101*n11)*n11*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n101*n11)*n30*n48*n53/(n52*n98) + n91)/n144 + n63*n71*(pow(alpha, NP0*n0 - n10*n101)*n10*n65*n86/n97 + pow(alpha, n0*n18 - n10*n101)*n10*n53*n65/(n52*n98) + pow(alpha, n0*n18 - n10*n101)*n29*n48*n53/(n52*n98) + n93)/n143 + n47*n78*(pow(alpha, NP0*n0 - n101*n9)*n0*n48*n86*n9/n97 + pow(alpha, n0*n18 - n101*n9)*n0*n48*n53*n9/(n52*n98) + pow(alpha, n0*n18 - n101*n9)*n22*n28*n53/(n52*n98) + n28*n42*n48)/n142 + n63*n66*(pow(alpha, NP0*n0 - n101*n8)*n65*n8*n86/n97 + pow(alpha, n0*n18 - n101*n8)*n27*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n8)*n53*n65*n8/(n52*n98) + n22*n27*n41)/n141 + n56*n63*xF[4]*(pow(alpha, NP0*n0 - n101*n7)*n65*n7*n86/n97 + pow(alpha, n0*n18 - n101*n7)*n26*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n7)*n53*n65*n7/(n52*n98) + n89)/n140 + n63*n68*(pow(alpha, NP0*n0 - n101*n6)*n6*n65*n86/n97 + pow(alpha, n0*n18 - n101*n6)*n25*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n6)*n53*n6*n65/(n52*n98) + n94)/n139 + n63*n72*(pow(alpha, NP0*n0 - n101*n4)*n4*n65*n86/n97 + pow(alpha, n0*n18 - n101*n4)*n23*n48*n53/(n52*n98) + pow(alpha, n0*n18 - n101*n4)*n4*n53*n65/(n52*n98) + n96)/n137)) - n262, -n14);
18999  NP_sqrt_base = fabs(NP_sqrt_base);
19000  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
19001  NT1 = n64*(n99 - log(-pow(alpha, NP1*n0)*n86 + 1));
19002  g0 = MW[1] - Mstar;
19003  g1 = MW[0] - Mstar;
19004  g2 = NT1 + 1;
19005  g3 = xPj - xTj;
19006  g4 = MW[2] - Mstar;
19007  g5 = MW[3] - Mstar;
19008  g6 = MW[4] - Mstar;
19009  g7 = MW[5] - Mstar;
19010  g8 = MW[6] - Mstar;
19011  g9 = MW[7] - Mstar;
19012  g10 = MW[8] - Mstar;
19013  g11 = MW[9] - Mstar;
19014  g12 = xF[0] - xTj;
19015  g13 = xF[0] - xPj;
19016  g14 = -xTj;
19017  g15 = xPj/xF[1];
19018  g16 = pow(alpha, -g1);
19019  g17 = pow(alpha, -g0);
19020  g18 = pow(alpha, -g4);
19021  g19 = pow(alpha, -g5);
19022  g20 = pow(alpha, -g6);
19023  g21 = pow(alpha, -g7);
19024  g22 = pow(alpha, -g8);
19025  g23 = pow(alpha, -g9);
19026  g24 = pow(alpha, -g10);
19027  g25 = pow(alpha, -g11);
19028  g26 = log(xF[0]/xF[1]);
19029  g27 = -g2;
19030  g28 = pow(alpha, NP1*g0);
19031  g29 = pow(alpha, NP1*g1);
19032  g30 = log(g16);
19033  g31 = pow(alpha, NP1*g4);
19034  g32 = pow(alpha, NP1*g5);
19035  g33 = pow(alpha, NP1*g6);
19036  g34 = pow(alpha, NP1*g7);
19037  g35 = pow(alpha, NP1*g8);
19038  g36 = pow(alpha, NP1*g9);
19039  g37 = pow(alpha, NP1*g10);
19040  g38 = pow(alpha, NP1*g11);
19041  g39 = -g26;
19042  g40 = g12/g3;
19043  g41 = g3/g12;
19044  g42 = -g28 + 1;
19045  g43 = -g28 + 1;
19046  g44 = -g29 + 1;
19047  g45 = -g31 + 1;
19048  g46 = -g32 + 1;
19049  g47 = -g33 + 1;
19050  g48 = -g34 + 1;
19051  g49 = -g35 + 1;
19052  g50 = -g36 + 1;
19053  g51 = -g37 + 1;
19054  g52 = -g38 + 1;
19055  g53 = -g29;
19056  g54 = -g31;
19057  g55 = -g32;
19058  g56 = -g33;
19059  g57 = -g34;
19060  g58 = -g35;
19061  g59 = -g36;
19062  g60 = -g37;
19063  g61 = -g38;
19064  g62 = -1.0*g26;
19065  g63 = -g3/g13;
19066  g64 = g13/(g3*xF[1]);
19067  g65 = pow(alpha, g0*g27) - 1;
19068  g66 = pow(alpha, g0*g27) - 1;
19069  g67 = pow(alpha, g1*g27) - 1;
19070  g68 = pow(alpha, g27*g4) - 1;
19071  g69 = pow(alpha, g27*g5) - 1;
19072  g70 = pow(alpha, g27*g6) - 1;
19073  g71 = pow(alpha, g27*g7) - 1;
19074  g72 = pow(alpha, g27*g8) - 1;
19075  g73 = pow(alpha, g27*g9) - 1;
19076  g74 = pow(alpha, g10*g27) - 1;
19077  g75 = pow(alpha, g11*g27) - 1;
19078  g76 = -pow(alpha, g1*g27);
19079  g77 = -pow(alpha, g27*g4);
19080  g78 = -pow(alpha, g27*g5);
19081  g79 = -pow(alpha, g27*g6);
19082  g80 = -pow(alpha, g27*g7);
19083  g81 = -pow(alpha, g27*g8);
19084  g82 = -pow(alpha, g27*g9);
19085  g83 = -pow(alpha, g10*g27);
19086  g84 = -pow(alpha, g11*g27);
19087  g85 = g43 + g66;
19088  g86 = -g29 - g76;
19089  g87 = -g31 - g77;
19090  g88 = -g32 - g78;
19091  g89 = -g33 - g79;
19092  g90 = -g34 - g80;
19093  g91 = -g35 - g81;
19094  g92 = -g36 - g82;
19095  g93 = -g37 - g83;
19096  g94 = -g38 - g84;
19097  g95 = pow(alpha, g1*g27) + g53;
19098  g96 = g43 + g66;
19099  g97 = pow(alpha, g27*g4) + g54;
19100  g98 = pow(alpha, g27*g5) + g55;
19101  g99 = pow(alpha, g27*g6) + g56;
19102  g100 = pow(alpha, g27*g7) + g57;
19103  g101 = pow(alpha, g27*g8) + g58;
19104  g102 = pow(alpha, g27*g9) + g59;
19105  g103 = pow(alpha, g10*g27) + g60;
19106  g104 = pow(alpha, g11*g27) + g61;
19107  g105 = xF[9]/g104;
19108  g106 = xF[8]/g103;
19109  g107 = xF[1]/g96;
19110  g108 = xF[2]/g97;
19111  g109 = xF[3]/g98;
19112  g110 = xF[6]/g101;
19113  g111 = xF[7]/g102;
19114  g112 = xF[4]/g99;
19115  g113 = xF[5]/g100;
19116  g114 = xF[0]/g95;
19117  g115 = xF[1]/g85;
19118  g116 = xF[0]/g86;
19119  g117 = xF[9]/g94;
19120  g118 = xF[4]/g89;
19121  g119 = xF[5]/g90;
19122  g120 = xF[7]/g92;
19123  g121 = xF[2]/g87;
19124  g122 = xF[3]/g88;
19125  g123 = xF[6]/g91;
19126  g124 = xF[8]/g93;
19127  g125 = g49/g91;
19128  g126 = g52/g94;
19129  g127 = g47/g89;
19130  g128 = g50/g92;
19131  g129 = g44/g86;
19132  g130 = g48/g90;
19133  g131 = g46/g88;
19134  g132 = g42/g85;
19135  g133 = g45/g87;
19136  g134 = g51/g93;
19137  g135 = g65/g85;
19138  g136 = g67/g86;
19139  g137 = g71/g90;
19140  g138 = g68/g87;
19141  g139 = g69/g88;
19142  g140 = g70/g89;
19143  g141 = g74/g93;
19144  g142 = g75/g94;
19145  g143 = g72/g91;
19146  g144 = g73/g92;
19147  g145 = log(g14*g64*g96/g43);
19148  g146 = log(g14*g64*g85/g42);
19149  g147 = log(g15*g40*g96/g66);
19150  g148 = 1.0*g145;
19151  g149 = log(g15*g40*g85/g65);
19152  g150 = 1.0*g147;
19153  g151 = -g105*g148*(g61 + 1) - g105*g150*(pow(alpha, g11*g27) - 1) - g106*g148*(g60 + 1) - g106*g150*(pow(alpha, g10*g27) - 1) - g107*g148*g43 - g107*g150*g66 - g108*g148*(g54 + 1) - g108*g150*(pow(alpha, g27*g4) - 1) - g109*g148*(g55 + 1) - g109*g150*(pow(alpha, g27*g5) - 1) - g110*g148*(g58 + 1) - g110*g150*(pow(alpha, g27*g8) - 1) - g111*g148*(g59 + 1) - g111*g150*(pow(alpha, g27*g9) - 1) - g112*g148*(g56 + 1) - g112*g150*(pow(alpha, g27*g6) - 1) - g113*g148*(g57 + 1) - g113*g150*(pow(alpha, g27*g7) - 1) - g114*g148*(g53 + 1) - g114*g150*(pow(alpha, g1*g27) - 1) - g62*xF[0] - g62*xF[1] - g62*xF[2] - g62*xF[3] - g62*xF[4] - g62*xF[5] - g62*xF[6] - g62*xF[7] - g62*xF[8] - g62*xF[9];
19154  LpF = xF[0]*(g16 + 1.0)*(g129*g146 + g136*g149 + g39)/(g30*(g16 - 1.0)) + xF[1]*(g17 + 1.0)*(g132*g146 + g135*g149 + g39)/(g30*(g17 - 1.0)) + xF[2]*(g18 + 1.0)*(g133*g146 + g138*g149 + g39)/(g30*(g18 - 1.0)) + xF[3]*(g19 + 1.0)*(g131*g146 + g139*g149 + g39)/(g30*(g19 - 1.0)) + xF[4]*(g20 + 1.0)*(g127*g146 + g140*g149 + g39)/(g30*(g20 - 1.0)) + xF[5]*(g21 + 1.0)*(g130*g146 + g137*g149 + g39)/(g30*(g21 - 1.0)) + xF[6]*(g22 + 1.0)*(g125*g146 + g143*g149 + g39)/(g30*(g22 - 1.0)) + xF[7]*(g23 + 1.0)*(g128*g146 + g144*g149 + g39)/(g30*(g23 - 1.0)) + xF[8]*(g24 + 1.0)*(g134*g146 + g141*g149 + g39)/(g30*(g24 - 1.0)) + xF[9]*(g25 + 1.0)*(g126*g146 + g142*g149 + g39)/(g30*(g25 - 1.0));
19155  PpF = g40;
19156  TpF = -g13/g3;
19157  SWUpF = g151;
19158  SWUpP = g151*g41;
19159  xP[0] = g116*g41*g67;
19160  xP[1] = g115*g41*g65;
19161  xP[2] = g121*g41*g68;
19162  xP[3] = g122*g41*g69;
19163  xP[4] = g118*g41*g70;
19164  xP[5] = g119*g41*g71;
19165  xP[6] = g123*g41*g72;
19166  xP[7] = g120*g41*g73;
19167  xP[8] = g124*g41*g74;
19168  xP[9] = g117*g41*g75;
19169  xT[0] = g116*g44*g63;
19170  xT[1] = g115*g42*g63;
19171  xT[2] = g121*g45*g63;
19172  xT[3] = g122*g46*g63;
19173  xT[4] = g118*g47*g63;
19174  xT[5] = g119*g48*g63;
19175  xT[6] = g123*g49*g63;
19176  xT[7] = g120*g50*g63;
19177  xT[8] = g124*g51*g63;
19178  xT[9] = g117*g52*g63;
19179  break;
19180  case 11:
19181  n0 = MW[0] - Mstar;
19182  n1 = log(alpha);
19183  n2 = xPj - xTj;
19184  n3 = xF[0] - xPj;
19185  n4 = MW[10] - Mstar;
19186  n5 = MW[1] - Mstar;
19187  n6 = MW[2] - Mstar;
19188  n7 = MW[3] - Mstar;
19189  n8 = MW[4] - Mstar;
19190  n9 = MW[5] - Mstar;
19191  n10 = MW[6] - Mstar;
19192  n11 = MW[7] - Mstar;
19193  n12 = MW[8] - Mstar;
19194  n13 = MW[9] - Mstar;
19195  n14 = log(xTj);
19196  n15 = -2;
19197  n16 = xF[0]*xPj;
19198  n17 = -Mstar;
19199  n18 = -xPj;
19200  n19 = -NP0*n15;
19201  n20 = -xTj;
19202  n21 = pow(n0, -n15);
19203  n22 = pow(n1, -n15);
19204  n23 = pow(n4, -n15);
19205  n24 = pow(n5, -n15);
19206  n25 = pow(n6, -n15);
19207  n26 = pow(n7, -n15);
19208  n27 = pow(n8, -n15);
19209  n28 = pow(n9, -n15);
19210  n29 = pow(n10, -n15);
19211  n30 = pow(n11, -n15);
19212  n31 = pow(n12, -n15);
19213  n32 = pow(n13, -n15);
19214  n33 = Mstar*n1;
19215  n34 = -n1*n15;
19216  n35 = n1*xF[0];
19217  n36 = pow(alpha, NP0*n0);
19218  n37 = n16 + n20*xF[0];
19219  n38 = n16 + n18*xTj;
19220  n39 = pow(alpha, NP0*n4);
19221  n40 = pow(alpha, NP0*n5);
19222  n41 = pow(alpha, NP0*n6);
19223  n42 = pow(alpha, NP0*n7);
19224  n43 = pow(alpha, NP0*n8);
19225  n44 = pow(alpha, NP0*n9);
19226  n45 = pow(alpha, NP0*n10);
19227  n46 = pow(alpha, NP0*n11);
19228  n47 = pow(alpha, NP0*n12);
19229  n48 = pow(alpha, NP0*n13);
19230  n49 = -MW[0]*n1;
19231  n50 = n2/n3;
19232  n51 = -n22;
19233  n52 = n1*n11;
19234  n53 = n1*n9;
19235  n54 = n1*n8;
19236  n55 = -n36 + 1;
19237  n56 = -n39 + 1;
19238  n57 = pow(alpha, n0*n19);
19239  n58 = pow(n37, -n15);
19240  n59 = pow(n38, -n15);
19241  n60 = -n40 + 1;
19242  n61 = -n41 + 1;
19243  n62 = -n42 + 1;
19244  n63 = -n43 + 1;
19245  n64 = -n44 + 1;
19246  n65 = -n45 + 1;
19247  n66 = -n46 + 1;
19248  n67 = -n47 + 1;
19249  n68 = -n48 + 1;
19250  n69 = -n56;
19251  n70 = -n36;
19252  n71 = -n50;
19253  n72 = n0*n22;
19254  n73 = 1/(n0*n1);
19255  n74 = n64*xF[5];
19256  n75 = n55*xF[0];
19257  n76 = n41*n6;
19258  n77 = n65*xF[6];
19259  n78 = n12*n47;
19260  n79 = n67*xF[8];
19261  n80 = n39*n4;
19262  n81 = n10*n45;
19263  n82 = n42*n7;
19264  n83 = n61*xF[2];
19265  n84 = n40*n5;
19266  n85 = n0*n36;
19267  n86 = n11*n46;
19268  n87 = n60*xF[1];
19269  n88 = n22*n30;
19270  n89 = n56*xF[10];
19271  n90 = n44*n9;
19272  n91 = log((-1.0 + xPj/xF[0])/n2);
19273  n92 = n23*n39;
19274  n93 = n1*n13*n48;
19275  n94 = n38/n37;
19276  n95 = n21*n57;
19277  n96 = n22*n27*n43;
19278  n97 = n21*n22*n36;
19279  n98 = n22*n25*n41;
19280  n99 = n22*n32*n48;
19281  n100 = n22*n26*n42;
19282  n101 = n22*n29*n45;
19283  n102 = n22*n24*n40;
19284  n103 = n50*n78*xF[8];
19285  n104 = n70*n94 + 1;
19286  n105 = pow(n104, -n15);
19287  n106 = n14 + n33 + n49 + n91;
19288  n107 = n36*n94/n104;
19289  n108 = n57*n59/(n105*n58);
19290  n109 = n108*n22;
19291  n110 = n73*(n106 - log(n104)) + 1;
19292  n111 = pow(alpha, n0*n110);
19293  n112 = pow(alpha, n110*n4);
19294  n113 = pow(alpha, n110*n5);
19295  n114 = pow(alpha, n110*n6);
19296  n115 = pow(alpha, n110*n7);
19297  n116 = pow(alpha, n110*n8);
19298  n117 = pow(alpha, n110*n9);
19299  n118 = pow(alpha, n10*n110);
19300  n119 = pow(alpha, n11*n110);
19301  n120 = pow(alpha, n110*n12);
19302  n121 = pow(alpha, n110*n13);
19303  n122 = n5/n113;
19304  n123 = n13/n121;
19305  n124 = n12/n120;
19306  n125 = n7/n115;
19307  n126 = n4/n112;
19308  n127 = n11/n119;
19309  n128 = n10/n118;
19310  n129 = n8/n116;
19311  n130 = n9/n117;
19312  n131 = n6/n114;
19313  n132 = n23/n112;
19314  n133 = n32/n121;
19315  n134 = n0*n131;
19316  n135 = n55 - 1 + 1.0/n111;
19317  n136 = n56 - 1 + 1.0/n112;
19318  n137 = n60 - 1 + 1.0/n113;
19319  n138 = n61 - 1 + 1.0/n114;
19320  n139 = n62 - 1 + 1.0/n115;
19321  n140 = n63 - 1 + 1.0/n116;
19322  n141 = n64 - 1 + 1.0/n117;
19323  n142 = n65 - 1 + 1.0/n118;
19324  n143 = n66 - 1 + 1.0/n119;
19325  n144 = n67 - 1 + 1.0/n120;
19326  n145 = n68 - 1 + 1.0/n121;
19327  n146 = pow(n135, -n15);
19328  n147 = pow(n136, -n15);
19329  n148 = pow(n137, -n15);
19330  n149 = pow(n138, -n15);
19331  n150 = pow(n139, -n15);
19332  n151 = pow(n140, -n15);
19333  n152 = pow(n141, -n15);
19334  n153 = pow(n142, -n15);
19335  n154 = pow(n143, -n15);
19336  n155 = pow(n144, -n15);
19337  n156 = pow(n145, -n15);
19338  n157 = pow(n135, 3);
19339  n158 = pow(n136, 3);
19340  n159 = pow(n137, 3);
19341  n160 = pow(n138, 3);
19342  n161 = pow(n139, 3);
19343  n162 = pow(n140, 3);
19344  n163 = pow(n141, 3);
19345  n164 = pow(n142, 3);
19346  n165 = pow(n143, 3);
19347  n166 = pow(n144, 3);
19348  n167 = pow(n145, 3);
19349  n168 = xF[9]/n145;
19350  n169 = xF[0]/n135;
19351  n170 = xF[2]/n138;
19352  n171 = xF[6]/n142;
19353  n172 = xF[1]/n137;
19354  n173 = xF[4]/n140;
19355  n174 = xF[10]/n136;
19356  n175 = xF[3]/n139;
19357  n176 = n1/n144;
19358  n177 = -1/n151;
19359  n178 = n1*n175;
19360  n179 = n46*xF[7]/n143;
19361  n180 = n68*xF[9]/n167;
19362  n181 = n62*xF[3]/n150;
19363  n182 = n66*xF[7]/n165;
19364  n183 = n66*xF[7]/n154;
19365  n184 = n68*xF[9]/n156;
19366  n185 = n44*n53*xF[5]/n141;
19367  n186 = 1/(n104*n111);
19368  n187 = n22*n31*n47*xF[8]/n144;
19369  n188 = n22*n28*n44*xF[5]/n141;
19370  n189 = n35*n50*n85/n135;
19371  n190 = n0*n35*n50*n70/n135;
19372  n191 = n169*n50*n97;
19373  n192 = n174*n22*n50*n92;
19374  n193 = n102*n172*n50;
19375  n194 = n170*n50*n98;
19376  n195 = n100*n175*n50;
19377  n196 = n173*n50*n96;
19378  n197 = n188*n50;
19379  n198 = n101*n171*n50;
19380  n199 = n179*n50*n88;
19381  n200 = n187*n50;
19382  n201 = n168*n50*n99;
19383  n202 = 0.5*n191;
19384  n203 = n186*n94 + 1;
19385  n204 = n1*n186*n85*n94 + n1*n85;
19386  n205 = n1*n107*n126 + n1*n80;
19387  n206 = n1*n107*n122 + n1*n84;
19388  n207 = n1*n107*n131 + n1*n76;
19389  n208 = n1*n107*n125 + n1*n82;
19390  n209 = n107*n54/n116 + n43*n54;
19391  n210 = n107*n53/n117 + n44*n53;
19392  n211 = n1*n107*n128 + n1*n81;
19393  n212 = n107*n52/n119 + n46*n52;
19394  n213 = n1*n107*n124 + n1*n78;
19395  n214 = n1*n107*n123 + n93;
19396  n215 = pow(n204, -n15);
19397  n216 = pow(n205, -n15);
19398  n217 = pow(n206, -n15);
19399  n218 = pow(n207, -n15);
19400  n219 = pow(n208, -n15);
19401  n220 = pow(n209, -n15);
19402  n221 = pow(n210, -n15);
19403  n222 = pow(n211, -n15);
19404  n223 = pow(n212, -n15);
19405  n224 = pow(n213, -n15);
19406  n225 = pow(n214, -n15);
19407  n226 = n186*n34*n85*n94 + n34*n85;
19408  n227 = n107*n21*n51/n111 + n21*n36*n51;
19409  n228 = n209*n63*xF[4];
19410  n229 = n203/n146;
19411  n230 = n210/n152;
19412  n231 = n213/n155;
19413  n232 = n204/n146;
19414  n233 = n211/n153;
19415  n234 = n206/n148;
19416  n235 = n207/n149;
19417  n236 = n215/n157;
19418  n237 = n205*xF[10]/n147;
19419  n238 = n224/n166;
19420  n239 = n218/n160;
19421  n240 = n217/n159;
19422  n241 = n227/n146;
19423  n242 = n219*n62*xF[3]/n161;
19424  n243 = n220*n63*xF[4]/n162;
19425  n244 = n232*n71*n75;
19426  n245 = n34*n50*n85*xF[0]*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)/n146;
19427  n246 = n34*n50*n80*xF[10]*(pow(alpha, NP0*n0 - n110*n4)*n1*n4*n94/n104 + n1*n80)/n147;
19428  n247 = n34*n50*n84*xF[1]*(pow(alpha, NP0*n0 - n110*n5)*n1*n5*n94/n104 + n1*n84)/n148;
19429  n248 = n34*n50*n76*xF[2]*(pow(alpha, NP0*n0 - n110*n6)*n1*n6*n94/n104 + n1*n76)/n149;
19430  n249 = n34*n50*n82*xF[3]*(pow(alpha, NP0*n0 - n110*n7)*n1*n7*n94/n104 + n1*n82)/n150;
19431  n250 = n34*n43*n50*n8*xF[4]*(pow(alpha, NP0*n0 - n110*n8)*n54*n94/n104 + n43*n54)/n151;
19432  n251 = n34*n50*n90*xF[5]*(pow(alpha, NP0*n0 - n110*n9)*n53*n94/n104 + n44*n53)/n152;
19433  n252 = n34*n50*n81*xF[6]*(pow(alpha, NP0*n0 - n10*n110)*n1*n10*n94/n104 + n1*n81)/n153;
19434  n253 = n34*n50*n86*xF[7]*(pow(alpha, NP0*n0 - n11*n110)*n52*n94/n104 + n46*n52)/n154;
19435  n254 = n103*n34*(pow(alpha, NP0*n0 - n110*n12)*n1*n12*n94/n104 + n1*n78)/n155;
19436  n255 = n13*n34*n48*n50*xF[9]*(pow(alpha, NP0*n0 - n110*n13)*n1*n13*n94/n104 + n93)/n156;
19437  n256 = 1.0*n35*n50*n85*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)/n146;
19438  n257 = n241*n50*n75;
19439  n258 = 0.5*n257;
19440  n259 = n189 + n244;
19441  n260 = n204*n226/n157;
19442  n261 = n107*n126*n72 + n108*n126*n72 + n108*n132*n51 + n22*n92;
19443  n262 = n102 + n107*n122*n72 + n108*n122*n72 + n108*n24*n51/n113;
19444  n263 = n108*n134*n51 + n109*n25/n114 + n25*n41*n51 + n131*n51*n85*n94/n104;
19445  n264 = n107*n129*n72 + n108*n129*n72 + n108*n27*n51/n116 + n96;
19446  n265 = n107*n130*n72 + n108*n130*n72 + n108*n28*n51/n117 + n22*n28*n44;
19447  n266 = n0*n108*n128*n51 + n109*n29/n118 + n29*n45*n51 + n128*n51*n85*n94/n104;
19448  n267 = n107*n124*n72 + n108*n124*n72 + n108*n31*n51/n120 + n22*n31*n47;
19449  n268 = n50*n83*(pow(alpha, n0*n19 - n110*n6)*n0*n51*n59*n6/(n105*n58) + pow(alpha, n0*n19 - n110*n6)*n22*n25*n59/(n105*n58) + n25*n41*n51 + n131*n51*n85*n94/n104)/n149;
19450  n269 = n50*n77*(pow(alpha, n0*n19 - n10*n110)*n0*n10*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n10*n110)*n22*n29*n59/(n105*n58) + n29*n45*n51 + n128*n51*n85*n94/n104)/n153;
19451  n270 = n71*n87*(pow(alpha, n0*n19 - n110*n5)*n24*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n5)*n5*n59*n72/(n105*n58) + n102 + n107*n122*n72)/n148;
19452  n271 = n181*n71*(pow(alpha, n0*n19 - n110*n7)*n26*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n7)*n59*n7*n72/(n105*n58) + n100 + n107*n125*n72);
19453  n272 = n63*n71*xF[4]*(pow(alpha, n0*n19 - n110*n8)*n27*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n8)*n59*n72*n8/(n105*n58) + n107*n129*n72 + n96)/n151;
19454  n273 = n71*n74*(pow(alpha, n0*n19 - n110*n9)*n28*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n9)*n59*n72*n9/(n105*n58) + n107*n130*n72 + n22*n28*n44)/n152;
19455  n274 = n183*n71*(pow(alpha, n0*n19 - n11*n110)*n11*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n11*n110)*n30*n51*n59/(n105*n58) + n107*n127*n72 + n46*n88);
19456  n275 = n71*n79*(pow(alpha, n0*n19 - n110*n12)*n12*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n110*n12)*n31*n51*n59/(n105*n58) + n107*n124*n72 + n22*n31*n47)/n155;
19457  n276 = n202 + n256 + n258;
19458  n277 = n1*n170*n50*n76 + n1*n171*n50*n81 + n1*n172*n50*n84 + n1*n174*n50*n80 + n103*n176 + n168*n50*n93 + n173*n43*n50*n54 + n178*n50*n82 + n179*n50*n52 + n181*n208*n71 + n183*n212*n71 + n184*n214*n71 + n185*n50 + n230*n71*n74 + n231*n71*n79 + n233*n71*n77 + n234*n71*n87 + n235*n71*n83 + n237*n50*n69 + n259 + n228*n71/n151;
19459  n278 = n191 + n192 + n193 + n194 + n195 + n196 + n197 + n198 + n199 + n200 + n201 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n255 + n257 + n268 + n269 + n270 + n271 + n272 + n273 + n274 + n275;
19460  n279 = n180*n214*n71*(n107*n123*n34 + n13*n34*n48) + n182*n212*n71*(n107*n127*n34 + n34*n86) + n184*n50*(pow(alpha, n0*n19 - n110*n13)*n0*n13*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n13)*n22*n32*n59/(n105*n58) + n32*n48*n51 + n123*n51*n85*n94/n104) + n260*n71*n75 + n278 + n213*n71*n79*(n107*n124*n34 + n34*n78)/n166 + n211*n71*n77*(n107*n128*n34 + n34*n81)/n164 + n210*n71*n74*(n107*n130*n34 + n34*n90)/n163 + n228*n71*(n107*n129*n34 + n34*n43*n8)/n162 + n208*n62*n71*xF[3]*(n107*n125*n34 + n34*n82)/n161 + n207*n71*n83*(n107*n131*n34 + n34*n76)/n160 + n206*n71*n87*(n107*n122*n34 + n34*n84)/n159 + n205*n50*n69*xF[10]*(n107*n126*n34 + n34*n80)/n158 + n50*n89*(pow(alpha, n0*n19 - n110*n4)*n0*n4*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n4)*n22*n23*n59/(n105*n58) + n51*n92 + n126*n51*n85*n94/n104)/n147;
19461  NP_b = -n19*(n202 - 1.0*n236*n50*n75 + n256 - 0.5*xTj*(n15*n180*n225*n50 + n15*n182*n223*n50 + n15*n236*n50*n75 + n15*n238*n50*n79 + n15*n239*n50*n83 + n15*n240*n50*n87 + n15*n242*n50 + n15*n243*n50 + n15*n222*n50*n77/n164 + n15*n221*n50*n74/n163 + n15*n216*n50*n89/n158 + n181*n71*(pow(alpha, NP0*n0 - n110*n7)*n7*n72*n94/n104 + pow(alpha, n0*n19 - n110*n7)*n26*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n7)*n59*n7*n72/(n105*n58) + n100) + n183*n71*(pow(alpha, NP0*n0 - n11*n110)*n11*n72*n94/n104 + pow(alpha, n0*n19 - n11*n110)*n11*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n11*n110)*n30*n51*n59/(n105*n58) + n46*n88) + n184*n71*(pow(alpha, NP0*n0 - n110*n13)*n13*n72*n94/n104 + pow(alpha, n0*n19 - n110*n13)*n13*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n110*n13)*n32*n51*n59/(n105*n58) + n99) + n191 + n192 + n193 + n194 + n195 + n196 + n197 + n198 + n199 + n200 + n201 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n255 + n71*n79*(pow(alpha, NP0*n0 - n110*n12)*n12*n72*n94/n104 + pow(alpha, n0*n19 - n110*n12)*n12*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n110*n12)*n31*n51*n59/(n105*n58) + n22*n31*n47)/n155 + n50*n77*(pow(alpha, NP0*n0 - n10*n110)*n0*n10*n51*n94/n104 + pow(alpha, n0*n19 - n10*n110)*n0*n10*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n10*n110)*n22*n29*n59/(n105*n58) + n29*n45*n51)/n153 + n71*n74*(pow(alpha, NP0*n0 - n110*n9)*n72*n9*n94/n104 + pow(alpha, n0*n19 - n110*n9)*n28*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n9)*n59*n72*n9/(n105*n58) + n22*n28*n44)/n152 + n63*n71*xF[4]*(pow(alpha, NP0*n0 - n110*n8)*n72*n8*n94/n104 + pow(alpha, n0*n19 - n110*n8)*n27*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n8)*n59*n72*n8/(n105*n58) + n96)/n151 + n50*n83*(pow(alpha, NP0*n0 - n110*n6)*n0*n51*n6*n94/n104 + pow(alpha, n0*n19 - n110*n6)*n0*n51*n59*n6/(n105*n58) + pow(alpha, n0*n19 - n110*n6)*n22*n25*n59/(n105*n58) + n25*n41*n51)/n149 + n71*n87*(pow(alpha, NP0*n0 - n110*n5)*n5*n72*n94/n104 + pow(alpha, n0*n19 - n110*n5)*n24*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n5)*n5*n59*n72/(n105*n58) + n102)/n148 + n50*n69*xF[10]*(pow(alpha, NP0*n0 - n110*n4)*n4*n72*n94/n104 + pow(alpha, n0*n19 - n110*n4)*n23*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n4)*n4*n59*n72/(n105*n58) + n22*n92)/n147 + n50*n75*(pow(alpha, NP0*n0 - n0*n110)*n21*n22*(-n16 + n18*n20)/(n104*n37) + n21*n36*n51)/n146) + 0.5*n50*n75*(pow(alpha, NP0*n0 - n0*n110)*n21*n22*(-n16 + n18*n20)/(n104*n37) + n21*n36*n51)/n146) - n190 - n229*n35*n50*n55*n85 - n50*xTj*(n1*n170*n76 + n1*n171*n81 + n1*n172*n84 + n1*n174*n80 + n168*n93 + n173*n43*n54 + n176*n78*xF[8] + n177*n228 + n178*n82 + n179*n52 - n181*n208 - n183*n212 - n184*n214 + n185 - n230*n74 - n231*n79 - n232*n75 - n233*n77 - n234*n87 - n235*n83 + n237*n69 + n35*n85/n135);
19462  NP_2a = -n50*(n15*pow(n203, -n15)*n51*n75*n95/n157 - 1.0*n169*n97 - 2.0*n22*n229*n95*xF[0] + 1.0*xTj*(n100*n175 + n101*n171 + n102*n172 + n13*n34*n48*xF[9]*(pow(alpha, NP0*n0 - n110*n13)*n1*n13*n94/n104 + n93)/n156 + n15*n180*n225 + n15*n182*n223 + n15*n236*n75 + n15*n238*n79 + n15*n239*n83 + n15*n240*n87 + n15*n242 + n15*n243 + n15*n222*n77/n164 + n15*n221*n74/n163 + n15*n216*n89/n158 + n168*n99 + n169*n97 + n170*n98 + n173*n96 + n174*n22*n92 + n177*n63*xF[4]*(pow(alpha, n0*n19 - n110*n8)*n27*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n8)*n59*n72*n8/(n105*n58) + n107*n129*n72 + n96) + n179*n88 - n181*(pow(alpha, n0*n19 - n110*n7)*n26*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n7)*n59*n7*n72/(n105*n58) + n100 + n107*n125*n72) - n183*(pow(alpha, n0*n19 - n11*n110)*n11*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n11*n110)*n30*n51*n59/(n105*n58) + n107*n127*n72 + n46*n88) - n184*(pow(alpha, n0*n19 - n110*n13)*n13*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n110*n13)*n32*n51*n59/(n105*n58) + n107*n123*n72 + n99) + n187 + n188 + n241*n75 + n34*n78*xF[8]*(pow(alpha, NP0*n0 - n110*n12)*n1*n12*n94/n104 + n1*n78)/n155 - n79*(pow(alpha, n0*n19 - n110*n12)*n12*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n110*n12)*n31*n51*n59/(n105*n58) + n107*n124*n72 + n22*n31*n47)/n155 + n34*n86*xF[7]*(pow(alpha, NP0*n0 - n11*n110)*n52*n94/n104 + n46*n52)/n154 + n34*n81*xF[6]*(pow(alpha, NP0*n0 - n10*n110)*n1*n10*n94/n104 + n1*n81)/n153 + n77*(pow(alpha, n0*n19 - n10*n110)*n0*n10*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n10*n110)*n22*n29*n59/(n105*n58) + n29*n45*n51 + n128*n51*n85*n94/n104)/n153 + n34*n90*xF[5]*(pow(alpha, NP0*n0 - n110*n9)*n53*n94/n104 + n44*n53)/n152 - n74*(pow(alpha, n0*n19 - n110*n9)*n28*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n9)*n59*n72*n9/(n105*n58) + n107*n130*n72 + n22*n28*n44)/n152 + n34*n43*n8*xF[4]*(pow(alpha, NP0*n0 - n110*n8)*n54*n94/n104 + n43*n54)/n151 + n34*n82*xF[3]*(pow(alpha, NP0*n0 - n110*n7)*n1*n7*n94/n104 + n1*n82)/n150 + n34*n76*xF[2]*(pow(alpha, NP0*n0 - n110*n6)*n1*n6*n94/n104 + n1*n76)/n149 + n83*(pow(alpha, n0*n19 - n110*n6)*n0*n51*n59*n6/(n105*n58) + pow(alpha, n0*n19 - n110*n6)*n22*n25*n59/(n105*n58) + n25*n41*n51 + n131*n51*n85*n94/n104)/n149 + n34*n84*xF[1]*(pow(alpha, NP0*n0 - n110*n5)*n1*n5*n94/n104 + n1*n84)/n148 - n87*(pow(alpha, n0*n19 - n110*n5)*n24*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n5)*n5*n59*n72/(n105*n58) + n102 + n107*n122*n72)/n148 + n34*n80*xF[10]*(pow(alpha, NP0*n0 - n110*n4)*n1*n4*n94/n104 + n1*n80)/n147 + n69*xF[10]*(pow(alpha, n0*n19 - n110*n4)*n23*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n4)*n4*n59*n72/(n105*n58) + n107*n126*n72 + n22*n92)/n147 + n34*n85*xF[0]*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)/n146) + n21*n36*n51*n75*(n186*(-n16 + xPj*xTj)/n37 - 1)/n146);
19463  NP_sqrt_base = (NP0*(n20*(n1*n170*n50*n76 + n1*n171*n50*n81 + n1*n172*n50*n84 + n1*n174*n50*n80 + n103*n176 + n168*n50*n93 + n173*n43*n50*n54 + n178*n50*n82 + n179*n50*n52 + n181*n71*(pow(alpha, NP0*n0 - n110*n7)*n1*n7*n94/n104 + n1*n82) + n183*n71*(pow(alpha, NP0*n0 - n11*n110)*n52*n94/n104 + n46*n52) + n184*n71*(pow(alpha, NP0*n0 - n110*n13)*n1*n13*n94/n104 + n93) + n185*n50 + n189 + n71*n79*(pow(alpha, NP0*n0 - n110*n12)*n1*n12*n94/n104 + n1*n78)/n155 + n71*n77*(pow(alpha, NP0*n0 - n10*n110)*n1*n10*n94/n104 + n1*n81)/n153 + n71*n74*(pow(alpha, NP0*n0 - n110*n9)*n53*n94/n104 + n44*n53)/n152 + n63*n71*xF[4]*(pow(alpha, NP0*n0 - n110*n8)*n54*n94/n104 + n43*n54)/n151 + n71*n83*(pow(alpha, NP0*n0 - n110*n6)*n1*n6*n94/n104 + n1*n76)/n149 + n71*n87*(pow(alpha, NP0*n0 - n110*n5)*n1*n5*n94/n104 + n1*n84)/n148 + n50*n69*xF[10]*(pow(alpha, NP0*n0 - n110*n4)*n1*n4*n94/n104 + n1*n80)/n147 + n71*n75*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)/n146) + n259) + xTj*(n168*n68*n71 + n173*n63*n71 + n174*n50*n69 + n175*n62*n71 + n71*n79/n144 + n66*n71*xF[7]/n143 + n71*n77/n142 + n71*n74/n141 + n71*n83/n138 + n71*n87/n137 + n71*n75/n135) + n50*n75/n135 + pow(NP0, -n15)*(-0.5*n191 - 0.5*n257 + 0.5*n260*n50*n75 + 0.5*n279*xTj - 1.0*n35*n50*n85*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)/n146))*(-n15*n20*(n180*n71*(pow(alpha, NP0*n0 - n110*n13)*n1*n13*n94/n104 + n93)*(pow(alpha, NP0*n0 - n110*n13)*n13*n34*n94/n104 + n13*n34*n48) + n181*n71*(pow(alpha, NP0*n0 - n110*n7)*n7*n72*n94/n104 + pow(alpha, n0*n19 - n110*n7)*n26*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n7)*n59*n7*n72/(n105*n58) + n100) + n182*n71*(pow(alpha, NP0*n0 - n11*n110)*n52*n94/n104 + n46*n52)*(pow(alpha, NP0*n0 - n11*n110)*n11*n34*n94/n104 + n34*n86) + n183*n71*(pow(alpha, NP0*n0 - n11*n110)*n11*n72*n94/n104 + pow(alpha, n0*n19 - n11*n110)*n11*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n11*n110)*n30*n51*n59/(n105*n58) + n46*n88) + n184*n50*(pow(alpha, NP0*n0 - n110*n13)*n0*n13*n51*n94/n104 + pow(alpha, n0*n19 - n110*n13)*n0*n13*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n13)*n22*n32*n59/(n105*n58) + n32*n48*n51) + n191 + n192 + n193 + n194 + n195 + n196 + n197 + n198 + n199 + n200 + n201 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n255 + n71*n79*(pow(alpha, NP0*n0 - n110*n12)*n1*n12*n94/n104 + n1*n78)*(pow(alpha, NP0*n0 - n110*n12)*n12*n34*n94/n104 + n34*n78)/n166 + n71*n77*(pow(alpha, NP0*n0 - n10*n110)*n1*n10*n94/n104 + n1*n81)*(pow(alpha, NP0*n0 - n10*n110)*n10*n34*n94/n104 + n34*n81)/n164 + n71*n74*(pow(alpha, NP0*n0 - n110*n9)*n53*n94/n104 + n44*n53)*(pow(alpha, NP0*n0 - n110*n9)*n34*n9*n94/n104 + n34*n90)/n163 + n63*n71*xF[4]*(pow(alpha, NP0*n0 - n110*n8)*n54*n94/n104 + n43*n54)*(pow(alpha, NP0*n0 - n110*n8)*n34*n8*n94/n104 + n34*n43*n8)/n162 + n62*n71*xF[3]*(pow(alpha, NP0*n0 - n110*n7)*n1*n7*n94/n104 + n1*n82)*(pow(alpha, NP0*n0 - n110*n7)*n34*n7*n94/n104 + n34*n82)/n161 + n71*n83*(pow(alpha, NP0*n0 - n110*n6)*n1*n6*n94/n104 + n1*n76)*(pow(alpha, NP0*n0 - n110*n6)*n34*n6*n94/n104 + n34*n76)/n160 + n71*n87*(pow(alpha, NP0*n0 - n110*n5)*n1*n5*n94/n104 + n1*n84)*(pow(alpha, NP0*n0 - n110*n5)*n34*n5*n94/n104 + n34*n84)/n159 + n50*n69*xF[10]*(pow(alpha, NP0*n0 - n110*n4)*n1*n4*n94/n104 + n1*n80)*(pow(alpha, NP0*n0 - n110*n4)*n34*n4*n94/n104 + n34*n80)/n158 + n71*n75*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)*(pow(alpha, NP0*n0 - n0*n110)*n0*n34*n94/n104 + n34*n85)/n157 + n71*n79*(pow(alpha, NP0*n0 - n110*n12)*n12*n72*n94/n104 + pow(alpha, n0*n19 - n110*n12)*n12*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n110*n12)*n31*n51*n59/(n105*n58) + n22*n31*n47)/n155 + n50*n77*(pow(alpha, NP0*n0 - n10*n110)*n0*n10*n51*n94/n104 + pow(alpha, n0*n19 - n10*n110)*n0*n10*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n10*n110)*n22*n29*n59/(n105*n58) + n29*n45*n51)/n153 + n71*n74*(pow(alpha, NP0*n0 - n110*n9)*n72*n9*n94/n104 + pow(alpha, n0*n19 - n110*n9)*n28*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n9)*n59*n72*n9/(n105*n58) + n22*n28*n44)/n152 + n63*n71*xF[4]*(pow(alpha, NP0*n0 - n110*n8)*n72*n8*n94/n104 + pow(alpha, n0*n19 - n110*n8)*n27*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n8)*n59*n72*n8/(n105*n58) + n96)/n151 + n50*n83*(pow(alpha, NP0*n0 - n110*n6)*n0*n51*n6*n94/n104 + pow(alpha, n0*n19 - n110*n6)*n0*n51*n59*n6/(n105*n58) + pow(alpha, n0*n19 - n110*n6)*n22*n25*n59/(n105*n58) + n25*n41*n51)/n149 + n71*n87*(pow(alpha, NP0*n0 - n110*n5)*n5*n72*n94/n104 + pow(alpha, n0*n19 - n110*n5)*n24*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n5)*n5*n59*n72/(n105*n58) + n102)/n148 + n50*n89*(pow(alpha, NP0*n0 - n110*n4)*n0*n4*n51*n94/n104 + pow(alpha, n0*n19 - n110*n4)*n0*n4*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n4)*n22*n23*n59/(n105*n58) + n51*n92)/n147 + n50*n75*(pow(alpha, NP0*n0 - n0*n110)*n21*n22*(-n16 + n18*n20)/(n104*n37) + n21*n36*n51)/n146) + 2.0*n191 - 4.0*n236*n50*n75 + 2.0*n257 + 4.0*n35*n50*n85*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)/n146) + pow(-n19*(n202 + n256 - 0.5*xTj*(n180*n71*(pow(alpha, NP0*n0 - n110*n13)*n1*n13*n94/n104 + n93)*(pow(alpha, NP0*n0 - n110*n13)*n13*n34*n94/n104 + n13*n34*n48) + n181*n71*(pow(alpha, NP0*n0 - n110*n7)*n7*n72*n94/n104 + pow(alpha, n0*n19 - n110*n7)*n26*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n7)*n59*n7*n72/(n105*n58) + n100) + n182*n71*(pow(alpha, NP0*n0 - n11*n110)*n52*n94/n104 + n46*n52)*(pow(alpha, NP0*n0 - n11*n110)*n11*n34*n94/n104 + n34*n86) + n183*n71*(pow(alpha, NP0*n0 - n11*n110)*n11*n72*n94/n104 + pow(alpha, n0*n19 - n11*n110)*n11*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n11*n110)*n30*n51*n59/(n105*n58) + n46*n88) + n184*n50*(pow(alpha, NP0*n0 - n110*n13)*n0*n13*n51*n94/n104 + pow(alpha, n0*n19 - n110*n13)*n0*n13*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n13)*n22*n32*n59/(n105*n58) + n32*n48*n51) + n191 + n192 + n193 + n194 + n195 + n196 + n197 + n198 + n199 + n200 + n201 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n255 + n71*n79*(pow(alpha, NP0*n0 - n110*n12)*n1*n12*n94/n104 + n1*n78)*(pow(alpha, NP0*n0 - n110*n12)*n12*n34*n94/n104 + n34*n78)/n166 + n71*n77*(pow(alpha, NP0*n0 - n10*n110)*n1*n10*n94/n104 + n1*n81)*(pow(alpha, NP0*n0 - n10*n110)*n10*n34*n94/n104 + n34*n81)/n164 + n71*n74*(pow(alpha, NP0*n0 - n110*n9)*n53*n94/n104 + n44*n53)*(pow(alpha, NP0*n0 - n110*n9)*n34*n9*n94/n104 + n34*n90)/n163 + n63*n71*xF[4]*(pow(alpha, NP0*n0 - n110*n8)*n54*n94/n104 + n43*n54)*(pow(alpha, NP0*n0 - n110*n8)*n34*n8*n94/n104 + n34*n43*n8)/n162 + n62*n71*xF[3]*(pow(alpha, NP0*n0 - n110*n7)*n1*n7*n94/n104 + n1*n82)*(pow(alpha, NP0*n0 - n110*n7)*n34*n7*n94/n104 + n34*n82)/n161 + n71*n83*(pow(alpha, NP0*n0 - n110*n6)*n1*n6*n94/n104 + n1*n76)*(pow(alpha, NP0*n0 - n110*n6)*n34*n6*n94/n104 + n34*n76)/n160 + n71*n87*(pow(alpha, NP0*n0 - n110*n5)*n1*n5*n94/n104 + n1*n84)*(pow(alpha, NP0*n0 - n110*n5)*n34*n5*n94/n104 + n34*n84)/n159 + n50*n69*xF[10]*(pow(alpha, NP0*n0 - n110*n4)*n1*n4*n94/n104 + n1*n80)*(pow(alpha, NP0*n0 - n110*n4)*n34*n4*n94/n104 + n34*n80)/n158 + n71*n75*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)*(pow(alpha, NP0*n0 - n0*n110)*n0*n34*n94/n104 + n34*n85)/n157 + n71*n79*(pow(alpha, NP0*n0 - n110*n12)*n12*n72*n94/n104 + pow(alpha, n0*n19 - n110*n12)*n12*n59*n72/(n105*n58) + pow(alpha, n0*n19 - n110*n12)*n31*n51*n59/(n105*n58) + n22*n31*n47)/n155 + n50*n77*(pow(alpha, NP0*n0 - n10*n110)*n0*n10*n51*n94/n104 + pow(alpha, n0*n19 - n10*n110)*n0*n10*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n10*n110)*n22*n29*n59/(n105*n58) + n29*n45*n51)/n153 + n71*n74*(pow(alpha, NP0*n0 - n110*n9)*n72*n9*n94/n104 + pow(alpha, n0*n19 - n110*n9)*n28*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n9)*n59*n72*n9/(n105*n58) + n22*n28*n44)/n152 + n63*n71*xF[4]*(pow(alpha, NP0*n0 - n110*n8)*n72*n8*n94/n104 + pow(alpha, n0*n19 - n110*n8)*n27*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n8)*n59*n72*n8/(n105*n58) + n96)/n151 + n50*n83*(pow(alpha, NP0*n0 - n110*n6)*n0*n51*n6*n94/n104 + pow(alpha, n0*n19 - n110*n6)*n0*n51*n59*n6/(n105*n58) + pow(alpha, n0*n19 - n110*n6)*n22*n25*n59/(n105*n58) + n25*n41*n51)/n149 + n71*n87*(pow(alpha, NP0*n0 - n110*n5)*n5*n72*n94/n104 + pow(alpha, n0*n19 - n110*n5)*n24*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n5)*n5*n59*n72/(n105*n58) + n102)/n148 + n50*n89*(pow(alpha, NP0*n0 - n110*n4)*n0*n4*n51*n94/n104 + pow(alpha, n0*n19 - n110*n4)*n0*n4*n51*n59/(n105*n58) + pow(alpha, n0*n19 - n110*n4)*n22*n23*n59/(n105*n58) + n51*n92)/n147 + n50*n75*(pow(alpha, NP0*n0 - n0*n110)*n21*n22*(-n16 + n18*n20)/(n104*n37) + n21*n36*n51)/n146) - 0.5*n50*n75*(pow(alpha, NP0*n0 - n0*n110)*n0*n1*n94/n104 + n1*n85)*(pow(alpha, NP0*n0 - n0*n110)*n0*n34*n94/n104 + n34*n85)/n157 + 0.5*n50*n75*(pow(alpha, NP0*n0 - n0*n110)*n21*n22*(-n16 + n18*n20)/(n104*n37) + n21*n36*n51)/n146) - n190 - n232*n50*n75 - n277*xTj, -n15);
19464  NP_sqrt_base = fabs(NP_sqrt_base);
19465  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
19466  NT1 = n73*(n106 - log(-pow(alpha, NP1*n0)*n94 + 1));
19467  g0 = MW[1] - Mstar;
19468  g1 = MW[0] - Mstar;
19469  g2 = NT1 + 1;
19470  g3 = xPj - xTj;
19471  g4 = MW[10] - Mstar;
19472  g5 = MW[2] - Mstar;
19473  g6 = MW[3] - Mstar;
19474  g7 = MW[4] - Mstar;
19475  g8 = MW[5] - Mstar;
19476  g9 = MW[6] - Mstar;
19477  g10 = MW[7] - Mstar;
19478  g11 = MW[8] - Mstar;
19479  g12 = MW[9] - Mstar;
19480  g13 = xF[0] - xTj;
19481  g14 = xF[0] - xPj;
19482  g15 = -xTj;
19483  g16 = xPj/xF[1];
19484  g17 = pow(alpha, -g1);
19485  g18 = pow(alpha, -g4);
19486  g19 = pow(alpha, -g0);
19487  g20 = pow(alpha, -g5);
19488  g21 = pow(alpha, -g6);
19489  g22 = pow(alpha, -g7);
19490  g23 = pow(alpha, -g8);
19491  g24 = pow(alpha, -g9);
19492  g25 = pow(alpha, -g10);
19493  g26 = pow(alpha, -g11);
19494  g27 = pow(alpha, -g12);
19495  g28 = log(xF[0]/xF[1]);
19496  g29 = -g2;
19497  g30 = pow(alpha, NP1*g0);
19498  g31 = pow(alpha, NP1*g1);
19499  g32 = pow(alpha, NP1*g4);
19500  g33 = log(g17);
19501  g34 = pow(alpha, NP1*g5);
19502  g35 = pow(alpha, NP1*g6);
19503  g36 = pow(alpha, NP1*g7);
19504  g37 = pow(alpha, NP1*g8);
19505  g38 = pow(alpha, NP1*g9);
19506  g39 = pow(alpha, NP1*g10);
19507  g40 = pow(alpha, NP1*g11);
19508  g41 = pow(alpha, NP1*g12);
19509  g42 = -g28;
19510  g43 = g13/g3;
19511  g44 = g3/g13;
19512  g45 = -g30 + 1;
19513  g46 = -g30 + 1;
19514  g47 = -g31 + 1;
19515  g48 = -g34 + 1;
19516  g49 = -g35 + 1;
19517  g50 = -g36 + 1;
19518  g51 = -g37 + 1;
19519  g52 = -g38 + 1;
19520  g53 = -g39 + 1;
19521  g54 = -g40 + 1;
19522  g55 = -g41 + 1;
19523  g56 = -g32 + 1;
19524  g57 = -g31;
19525  g58 = -g32;
19526  g59 = -g34;
19527  g60 = -g35;
19528  g61 = -g36;
19529  g62 = -g37;
19530  g63 = -g38;
19531  g64 = -g39;
19532  g65 = -g40;
19533  g66 = -g41;
19534  g67 = -1.0*g28;
19535  g68 = -g3/g14;
19536  g69 = g14/(g3*xF[1]);
19537  g70 = pow(alpha, g0*g29) - 1;
19538  g71 = pow(alpha, g0*g29) - 1;
19539  g72 = pow(alpha, g1*g29) - 1;
19540  g73 = pow(alpha, g29*g5) - 1;
19541  g74 = pow(alpha, g29*g6) - 1;
19542  g75 = pow(alpha, g29*g7) - 1;
19543  g76 = pow(alpha, g29*g8) - 1;
19544  g77 = pow(alpha, g29*g9) - 1;
19545  g78 = pow(alpha, g10*g29) - 1;
19546  g79 = pow(alpha, g11*g29) - 1;
19547  g80 = pow(alpha, g12*g29) - 1;
19548  g81 = pow(alpha, g29*g4) - 1;
19549  g82 = -pow(alpha, g1*g29);
19550  g83 = -pow(alpha, g29*g4);
19551  g84 = -pow(alpha, g29*g5);
19552  g85 = -pow(alpha, g29*g6);
19553  g86 = -pow(alpha, g29*g7);
19554  g87 = -pow(alpha, g29*g8);
19555  g88 = -pow(alpha, g29*g9);
19556  g89 = -pow(alpha, g10*g29);
19557  g90 = -pow(alpha, g11*g29);
19558  g91 = -pow(alpha, g12*g29);
19559  g92 = g46 + g71;
19560  g93 = -g31 - g82;
19561  g94 = -g32 - g83;
19562  g95 = -g34 - g84;
19563  g96 = -g35 - g85;
19564  g97 = -g36 - g86;
19565  g98 = -g37 - g87;
19566  g99 = -g38 - g88;
19567  g100 = -g39 - g89;
19568  g101 = -g40 - g90;
19569  g102 = -g41 - g91;
19570  g103 = pow(alpha, g1*g29) + g57;
19571  g104 = g46 + g71;
19572  g105 = pow(alpha, g29*g4) + g58;
19573  g106 = pow(alpha, g29*g5) + g59;
19574  g107 = pow(alpha, g29*g6) + g60;
19575  g108 = pow(alpha, g29*g7) + g61;
19576  g109 = pow(alpha, g29*g8) + g62;
19577  g110 = pow(alpha, g29*g9) + g63;
19578  g111 = pow(alpha, g10*g29) + g64;
19579  g112 = pow(alpha, g11*g29) + g65;
19580  g113 = pow(alpha, g12*g29) + g66;
19581  g114 = xF[9]/g113;
19582  g115 = xF[8]/g112;
19583  g116 = xF[1]/g104;
19584  g117 = xF[10]/g105;
19585  g118 = xF[3]/g107;
19586  g119 = xF[6]/g110;
19587  g120 = xF[7]/g111;
19588  g121 = xF[4]/g108;
19589  g122 = xF[5]/g109;
19590  g123 = xF[2]/g106;
19591  g124 = xF[0]/g103;
19592  g125 = xF[1]/g92;
19593  g126 = xF[0]/g93;
19594  g127 = xF[9]/g102;
19595  g128 = xF[4]/g97;
19596  g129 = xF[5]/g98;
19597  g130 = xF[7]/g100;
19598  g131 = xF[2]/g95;
19599  g132 = xF[3]/g96;
19600  g133 = xF[6]/g99;
19601  g134 = xF[8]/g101;
19602  g135 = xF[10]/g94;
19603  g136 = g52/g99;
19604  g137 = g55/g102;
19605  g138 = g50/g97;
19606  g139 = g53/g100;
19607  g140 = g47/g93;
19608  g141 = g51/g98;
19609  g142 = g49/g96;
19610  g143 = g45/g92;
19611  g144 = g48/g95;
19612  g145 = g56/g94;
19613  g146 = g54/g101;
19614  g147 = g70/g92;
19615  g148 = g72/g93;
19616  g149 = g76/g98;
19617  g150 = g73/g95;
19618  g151 = g74/g96;
19619  g152 = g75/g97;
19620  g153 = g79/g101;
19621  g154 = g80/g102;
19622  g155 = g77/g99;
19623  g156 = g78/g100;
19624  g157 = g81/g94;
19625  g158 = log(g104*g15*g69/g46);
19626  g159 = log(g15*g69*g92/g45);
19627  g160 = log(g104*g16*g43/g71);
19628  g161 = 1.0*g158;
19629  g162 = log(g16*g43*g92/g70);
19630  g163 = 1.0*g160;
19631  g164 = -g114*g161*(g66 + 1) - g114*g163*(pow(alpha, g12*g29) - 1) - g115*g161*(g65 + 1) - g115*g163*(pow(alpha, g11*g29) - 1) - g116*g161*g46 - g116*g163*g71 - g117*g161*(g58 + 1) - g117*g163*(pow(alpha, g29*g4) - 1) - g118*g161*(g60 + 1) - g118*g163*(pow(alpha, g29*g6) - 1) - g119*g161*(g63 + 1) - g119*g163*(pow(alpha, g29*g9) - 1) - g120*g161*(g64 + 1) - g120*g163*(pow(alpha, g10*g29) - 1) - g121*g161*(g61 + 1) - g121*g163*(pow(alpha, g29*g7) - 1) - g122*g161*(g62 + 1) - g122*g163*(pow(alpha, g29*g8) - 1) - g123*g161*(g59 + 1) - g123*g163*(pow(alpha, g29*g5) - 1) - g124*g161*(g57 + 1) - g124*g163*(pow(alpha, g1*g29) - 1) - g67*xF[0] - g67*xF[10] - g67*xF[1] - g67*xF[2] - g67*xF[3] - g67*xF[4] - g67*xF[5] - g67*xF[6] - g67*xF[7] - g67*xF[8] - g67*xF[9];
19632  LpF = xF[0]*(g17 + 1.0)*(g140*g159 + g148*g162 + g42)/(g33*(g17 - 1.0)) + xF[10]*(g18 + 1.0)*(g145*g159 + g157*g162 + g42)/(g33*(g18 - 1.0)) + xF[1]*(g19 + 1.0)*(g143*g159 + g147*g162 + g42)/(g33*(g19 - 1.0)) + xF[2]*(g20 + 1.0)*(g144*g159 + g150*g162 + g42)/(g33*(g20 - 1.0)) + xF[3]*(g21 + 1.0)*(g142*g159 + g151*g162 + g42)/(g33*(g21 - 1.0)) + xF[4]*(g22 + 1.0)*(g138*g159 + g152*g162 + g42)/(g33*(g22 - 1.0)) + xF[5]*(g23 + 1.0)*(g141*g159 + g149*g162 + g42)/(g33*(g23 - 1.0)) + xF[6]*(g24 + 1.0)*(g136*g159 + g155*g162 + g42)/(g33*(g24 - 1.0)) + xF[7]*(g25 + 1.0)*(g139*g159 + g156*g162 + g42)/(g33*(g25 - 1.0)) + xF[8]*(g26 + 1.0)*(g146*g159 + g153*g162 + g42)/(g33*(g26 - 1.0)) + xF[9]*(g27 + 1.0)*(g137*g159 + g154*g162 + g42)/(g33*(g27 - 1.0));
19633  PpF = g43;
19634  TpF = -g14/g3;
19635  SWUpF = g164;
19636  SWUpP = g164*g44;
19637  xP[0] = g126*g44*g72;
19638  xP[1] = g125*g44*g70;
19639  xP[2] = g131*g44*g73;
19640  xP[3] = g132*g44*g74;
19641  xP[4] = g128*g44*g75;
19642  xP[5] = g129*g44*g76;
19643  xP[6] = g133*g44*g77;
19644  xP[7] = g130*g44*g78;
19645  xP[8] = g134*g44*g79;
19646  xP[9] = g127*g44*g80;
19647  xP[10] = g135*g44*g81;
19648  xT[0] = g126*g47*g68;
19649  xT[1] = g125*g45*g68;
19650  xT[2] = g131*g48*g68;
19651  xT[3] = g132*g49*g68;
19652  xT[4] = g128*g50*g68;
19653  xT[5] = g129*g51*g68;
19654  xT[6] = g133*g52*g68;
19655  xT[7] = g130*g53*g68;
19656  xT[8] = g134*g54*g68;
19657  xT[9] = g127*g55*g68;
19658  xT[10] = g135*g56*g68;
19659  break;
19660  case 12:
19661  n0 = -2.00000000000000;
19662  n1 = MW[0] - Mstar;
19663  n2 = log(alpha);
19664  n3 = xPj - xTj;
19665  n4 = xF[0] - xPj;
19666  n5 = MW[10] - Mstar;
19667  n6 = MW[11] - Mstar;
19668  n7 = MW[1] - Mstar;
19669  n8 = MW[2] - Mstar;
19670  n9 = MW[3] - Mstar;
19671  n10 = MW[4] - Mstar;
19672  n11 = MW[5] - Mstar;
19673  n12 = MW[6] - Mstar;
19674  n13 = MW[7] - Mstar;
19675  n14 = MW[8] - Mstar;
19676  n15 = MW[9] - Mstar;
19677  n16 = log(xTj);
19678  n17 = -n1;
19679  n18 = -2;
19680  n19 = xF[0]*xPj;
19681  n20 = -Mstar;
19682  n21 = -xTj;
19683  n22 = -n0*xF[11];
19684  n23 = -xPj;
19685  n24 = -NP0*n0;
19686  n25 = -xF[0];
19687  n26 = pow(n1, -n0);
19688  n27 = pow(n2, -n0);
19689  n28 = pow(n5, -n0);
19690  n29 = pow(n6, -n0);
19691  n30 = pow(n7, -n0);
19692  n31 = pow(n8, -n0);
19693  n32 = pow(n9, -n0);
19694  n33 = pow(n10, -n0);
19695  n34 = pow(n11, -n0);
19696  n35 = pow(n12, -n0);
19697  n36 = pow(n13, -n0);
19698  n37 = pow(n14, -n0);
19699  n38 = pow(n15, -n0);
19700  n39 = Mstar*n2;
19701  n40 = -n0*n2;
19702  n41 = -n2;
19703  n42 = pow(alpha, NP0*n1);
19704  n43 = n19 + n21*xF[0];
19705  n44 = n19 + n21*xPj;
19706  n45 = pow(alpha, NP0*n5);
19707  n46 = pow(alpha, NP0*n6);
19708  n47 = pow(alpha, NP0*n7);
19709  n48 = pow(alpha, NP0*n8);
19710  n49 = pow(alpha, NP0*n9);
19711  n50 = pow(alpha, NP0*n10);
19712  n51 = pow(alpha, NP0*n11);
19713  n52 = pow(alpha, NP0*n12);
19714  n53 = pow(alpha, NP0*n13);
19715  n54 = pow(alpha, NP0*n14);
19716  n55 = pow(alpha, NP0*n15);
19717  n56 = MW[0]*n41;
19718  n57 = n3/n4;
19719  n58 = n11*n2;
19720  n59 = n2*n7;
19721  n60 = n13*n2;
19722  n61 = -n42 + 1;
19723  n62 = -n45 + 1;
19724  n63 = pow(alpha, NP0*n0*n17);
19725  n64 = pow(n44, -n0);
19726  n65 = -n46 + 1;
19727  n66 = -n47 + 1;
19728  n67 = -n48 + 1;
19729  n68 = -n49 + 1;
19730  n69 = -n50 + 1;
19731  n70 = -n51 + 1;
19732  n71 = -n52 + 1;
19733  n72 = -n53 + 1;
19734  n73 = -n54 + 1;
19735  n74 = -n55 + 1;
19736  n75 = -n71;
19737  n76 = -n62;
19738  n77 = -n69;
19739  n78 = -n42;
19740  n79 = -n46;
19741  n80 = -n48;
19742  n81 = -n51;
19743  n82 = -n52;
19744  n83 = -n55;
19745  n84 = n1*n27;
19746  n85 = 1/(n1*n2);
19747  n86 = n65*xF[11];
19748  n87 = n15*n55;
19749  n88 = n12*n52;
19750  n89 = n1*n42;
19751  n90 = n14*n54;
19752  n91 = n27*n34;
19753  n92 = n10*n50;
19754  n93 = n45*n5;
19755  n94 = n71*xF[6];
19756  n95 = n27*n36;
19757  n96 = n67*xF[2];
19758  n97 = n48*n8;
19759  n98 = n70*xF[5];
19760  n99 = n27*n30;
19761  n100 = n47*n7;
19762  n101 = n26*n27;
19763  n102 = n13*n53;
19764  n103 = n27*n38;
19765  n104 = n49*n9;
19766  n105 = log((-1.0 + xPj/xF[0])/n3);
19767  n106 = -n68*xF[3];
19768  n107 = -n74*xF[9];
19769  n108 = n104*xF[3];
19770  n109 = -n73*xF[8];
19771  n110 = n2*n46*n6;
19772  n111 = n44/n43;
19773  n112 = n101*n42;
19774  n113 = n27*n29*n46;
19775  n114 = n27*n31*n48;
19776  n115 = n27*n37*n54;
19777  n116 = n27*n28*n45;
19778  n117 = n27*n32*n49;
19779  n118 = n111*n78 + 1;
19780  n119 = n105 + n16 + n39 + n56;
19781  n120 = n111*n42/n118;
19782  n121 = n85*(n119 - log(n118)) + 1;
19783  n122 = pow(alpha, n1*n121);
19784  n123 = pow(alpha, n121*n5);
19785  n124 = pow(alpha, n121*n6);
19786  n125 = pow(alpha, n121*n7);
19787  n126 = pow(alpha, n121*n8);
19788  n127 = pow(alpha, n121*n9);
19789  n128 = pow(alpha, n10*n121);
19790  n129 = pow(alpha, n11*n121);
19791  n130 = pow(alpha, n12*n121);
19792  n131 = pow(alpha, n121*n13);
19793  n132 = pow(alpha, n121*n14);
19794  n133 = pow(alpha, n121*n15);
19795  n134 = n10/n128;
19796  n135 = n13/n131;
19797  n136 = n15/n133;
19798  n137 = n9/n127;
19799  n138 = n12/n130;
19800  n139 = n14/n132;
19801  n140 = n6/n124;
19802  n141 = n7/n125;
19803  n142 = n8/n126;
19804  n143 = -1/n122;
19805  n144 = n5/n123;
19806  n145 = n11/n129;
19807  n146 = n29/n124;
19808  n147 = pow(alpha, n121*n17) + n61 - 1;
19809  n148 = n62 - 1 + 1.0/n123;
19810  n149 = n65 - 1 + 1.0/n124;
19811  n150 = n66 - 1 + 1.0/n125;
19812  n151 = n67 - 1 + 1.0/n126;
19813  n152 = n68 - 1 + 1.0/n127;
19814  n153 = n69 - 1 + 1.0/n128;
19815  n154 = n70 - 1 + 1.0/n129;
19816  n155 = n71 - 1 + 1.0/n130;
19817  n156 = n72 - 1 + 1.0/n131;
19818  n157 = n73 - 1 + 1.0/n132;
19819  n158 = n74 - 1 + 1.0/n133;
19820  n159 = pow(n147, 3);
19821  n160 = pow(n148, 3);
19822  n161 = pow(n149, 3);
19823  n162 = pow(n150, 3);
19824  n163 = pow(n151, 3);
19825  n164 = pow(n152, 3);
19826  n165 = pow(n153, 3);
19827  n166 = pow(n154, 3);
19828  n167 = pow(n155, 3);
19829  n168 = pow(n156, 3);
19830  n169 = pow(n157, 3);
19831  n170 = pow(n158, 3);
19832  n171 = xF[0]/n147;
19833  n172 = xF[10]/n148;
19834  n173 = xF[9]/n158;
19835  n174 = xF[11]/n149;
19836  n175 = xF[2]/n151;
19837  n176 = xF[8]/n157;
19838  n177 = xF[3]/n152;
19839  n178 = xF[6]/n167;
19840  n179 = pow(n148, n18)*xF[10];
19841  n180 = n2/n152;
19842  n181 = n2*xF[4]/n153;
19843  n182 = -1/n161;
19844  n183 = pow(n147, n18)*n2;
19845  n184 = n2*xF[6]/n155;
19846  n185 = n51*xF[5]/n154;
19847  n186 = n47*xF[1]/n150;
19848  n187 = n53*xF[7]/n156;
19849  n188 = pow(n147, n18)*n61;
19850  n189 = -n66/n162;
19851  n190 = n61*xF[0]/n159;
19852  n191 = -pow(n154, n18)*n98;
19853  n192 = -n72*xF[7]/n168;
19854  n193 = -pow(n150, n18)*n66*xF[1];
19855  n194 = -pow(n156, n18)*n72*xF[7];
19856  n195 = n175*n2*n97;
19857  n196 = n103*n173*n55;
19858  n197 = n27*n33*n50*xF[4]/n153;
19859  n198 = n27*n35*n52*xF[6]/n155;
19860  n199 = n17*n171*n2*n42*n57;
19861  n200 = n112*n171*n57;
19862  n201 = n116*n172*n57;
19863  n202 = n113*n174*n57;
19864  n203 = n186*n57*n99;
19865  n204 = n114*n175*n57;
19866  n205 = n117*n177*n57;
19867  n206 = n197*n57;
19868  n207 = n185*n57*n91;
19869  n208 = n198*n57;
19870  n209 = n187*n57*n95;
19871  n210 = n115*n176*n57;
19872  n211 = n196*n57;
19873  n212 = 0.5*n200;
19874  n213 = n111/(n118*n122);
19875  n214 = n213 + 1;
19876  n215 = n214*xF[0];
19877  n216 = n2*n213*n89 + n2*n89;
19878  n217 = n120*n144*n2 + n2*n93;
19879  n218 = n110 + n120*n140*n2;
19880  n219 = n120*n59/n125 + n47*n59;
19881  n220 = n120*n142*n2 + n2*n97;
19882  n221 = n104*n2 + n120*n137*n2;
19883  n222 = n120*n134*n2 + n2*n92;
19884  n223 = n120*n58/n129 + n51*n58;
19885  n224 = n120*n138*n2 + n2*n88;
19886  n225 = n120*n60/n131 + n53*n60;
19887  n226 = n120*n139*n2 + n2*n90;
19888  n227 = n120*n136*n2 + n2*n87;
19889  n228 = pow(n216, -n0);
19890  n229 = pow(n217, -n0);
19891  n230 = pow(n218, -n0);
19892  n231 = pow(n219, -n0);
19893  n232 = pow(n220, -n0);
19894  n233 = pow(n221, -n0);
19895  n234 = pow(n222, -n0);
19896  n235 = pow(n223, -n0);
19897  n236 = pow(n224, -n0);
19898  n237 = pow(n225, -n0);
19899  n238 = pow(n226, -n0);
19900  n239 = pow(n227, -n0);
19901  n240 = n216*xF[0];
19902  n241 = n219*xF[1];
19903  n242 = n222*xF[4];
19904  n243 = n0*n120*n17*n2/n122 + n0*n17*n2*n42;
19905  n244 = n101*n213*n78 + n101*n78;
19906  n245 = n244*xF[0];
19907  n246 = pow(n152, n18)*n221;
19908  n247 = pow(n149, n18)*n218;
19909  n248 = pow(n158, n18)*n227;
19910  n249 = pow(n157, n18)*n226;
19911  n250 = pow(n155, n18)*n224*xF[6];
19912  n251 = n232/n163;
19913  n252 = n235/n166;
19914  n253 = pow(n156, n18)*n225*xF[7];
19915  n254 = pow(n151, n18)*n220*xF[2];
19916  n255 = pow(n153, n18)*n242*n77;
19917  n256 = n234*n69*xF[4]/n165;
19918  n257 = n188*n240*n57;
19919  n258 = n0*n17*n183*n42*n57*xF[0]*(pow(alpha, NP0*n1 + n121*n17)*n1*n111*n2/n118 + n2*n89);
19920  n259 = n179*n40*n57*n93*(pow(alpha, NP0*n1 - n121*n5)*n111*n2*n5/n118 + n2*n93);
19921  n260 = n110*pow(n149, n18)*n22*n57*(pow(alpha, NP0*n1 - n121*n6)*n111*n2*n6/n118 + n110);
19922  n261 = n100*pow(n150, n18)*n40*n57*xF[1]*(pow(alpha, NP0*n1 - n121*n7)*n111*n59/n118 + n47*n59);
19923  n262 = pow(n151, n18)*n40*n57*n97*xF[2]*(pow(alpha, NP0*n1 - n121*n8)*n111*n2*n8/n118 + n2*n97);
19924  n263 = n108*pow(n152, n18)*n40*n57*(pow(alpha, NP0*n1 - n121*n9)*n111*n2*n9/n118 + n104*n2);
19925  n264 = pow(n153, n18)*n40*n57*n92*xF[4]*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n2/n118 + n2*n92);
19926  n265 = n11*pow(n154, n18)*n40*n51*n57*xF[5]*(pow(alpha, NP0*n1 - n11*n121)*n111*n58/n118 + n51*n58);
19927  n266 = pow(n155, n18)*n40*n57*n88*xF[6]*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n2/n118 + n2*n88);
19928  n267 = n102*pow(n156, n18)*n40*n57*xF[7]*(pow(alpha, NP0*n1 - n121*n13)*n111*n60/n118 + n53*n60);
19929  n268 = pow(n157, n18)*n40*n57*n90*xF[8]*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n2/n118 + n2*n90);
19930  n269 = pow(n158, n18)*n40*n57*n87*xF[9]*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n2/n118 + n2*n87);
19931  n270 = 1.0*n183*n240*n57*n89;
19932  n271 = n188*n245*n57;
19933  n272 = 0.5*n271;
19934  n273 = pow(alpha, n1*n24)*pow(n118, n18)*n142*n17*n27*pow(n43, n18)*n64 + pow(alpha, n1*n24)*pow(n118, n18)*n27*n31*pow(n43, n18)*n64/n126 + n120*n142*n17*n27 + n27*n31*n80;
19935  n274 = pow(alpha, n1*n24)*pow(n118, n18)*n137*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24)*pow(n118, n18)*n27*n32*pow(n43, n18)*n64/n127 + n117 + n120*n137*n84;
19936  n275 = pow(alpha, n1*n24)*pow(n118, n18)*n134*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24)*pow(n118, n18)*n27*n33*pow(n43, n18)*n64/n128 + n120*n134*n84 + n27*n33*n50;
19937  n276 = pow(alpha, n1*n24)*pow(n118, n18)*n138*n17*n27*pow(n43, n18)*n64 + pow(alpha, n1*n24)*pow(n118, n18)*n27*n35*pow(n43, n18)*n64/n130 + n120*n138*n17*n27 + n27*n35*n82;
19938  n277 = pow(alpha, n1*n24)*pow(n118, n18)*n139*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24)*pow(n118, n18)*n27*n37*pow(n43, n18)*n64/n132 + n115 + n120*n139*n84;
19939  n278 = -pow(alpha, n1*n24)*n103*pow(n118, n18)*pow(n43, n18)*n64/n133 + pow(alpha, n1*n24)*pow(n118, n18)*n136*pow(n43, n18)*n64*n84 + n103*n55 + n120*n136*n84;
19940  n279 = pow(n151, n18)*n57*n96*(pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n17*n27*pow(n43, n18)*n64*n8 + pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n27*n31*pow(n43, n18)*n64 + n120*n142*n17*n27 + n27*n31*n80);
19941  n280 = pow(n155, n18)*n57*n94*(pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n12*n17*n27*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n27*n35*pow(n43, n18)*n64 + n120*n138*n17*n27 + n27*n35*n82);
19942  n281 = n179*n57*n76*(-pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*n27*n28*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*pow(n43, n18)*n5*n64*n84 + n116 + n120*n144*n84);
19943  n282 = n193*n57*(pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n7*n84 - pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n99 + n120*n141*n84 + n47*n99);
19944  n283 = n106*pow(n152, n18)*n57*(-pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*n27*n32*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*pow(n43, n18)*n64*n84*n9 + n117 + n120*n137*n84);
19945  n284 = pow(n153, n18)*n57*n77*xF[4]*(pow(alpha, n1*n24 - n10*n121)*n10*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n10*n121)*pow(n118, n18)*n27*n33*pow(n43, n18)*n64 + n120*n134*n84 + n27*n33*n50);
19946  n285 = n191*n57*(pow(alpha, n1*n24 - n11*n121)*n11*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n11*n121)*pow(n118, n18)*pow(n43, n18)*n64*n91 + n120*n145*n84 + n51*n91);
19947  n286 = n194*n57*(pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*n13*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*pow(n43, n18)*n64*n95 + n120*n135*n84 + n53*n95);
19948  n287 = n109*pow(n157, n18)*n57*(pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n14*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n27*n37*pow(n43, n18)*n64 + n115 + n120*n139*n84);
19949  n288 = n212 + n270 + n272;
19950  n289 = xTj*(n106*n246*n57 + n107*n248*n57 + n108*n180*n57 + n109*n249*n57 + n110*n174*n57 - pow(n151, n18)*n220*n57*n96 + n171*n2*n57*n89 + n172*n2*n57*n93 + n173*n2*n57*n87 + n176*n2*n57*n90 + n179*n217*n57*n76 + n181*n57*n92 + n184*n57*n88 + n185*n57*n58 + n186*n57*n59 + n187*n57*n60 + n188*n25*n57*(pow(alpha, NP0*n1 - n1*n121)*n1*n111*n2/n118 + n2*n89) + n191*n223*n57 + n193*n219*n57 + n194*n225*n57 + n195*n57 - n247*n57*n86 + n250*n57*n75 + n255*n57);
19951  n290 = n199 + n257 + n289;
19952  n291 = n200 + n201 + n202 + n203 + n204 + n205 + n206 + n207 + n208 + n209 + n210 + n211 + n258 + n259 + n260 + n261 + n262 + n263 + n264 + n265 + n266 + n267 + n268 + n269 + n271 + n279 + n280 + n281 + n282 + n283 + n284 + n285 + n286 + n287;
19953  n292 = n106*n221*n57*(n104*n40 + n120*n137*n40)/n164 + n107*pow(n158, n18)*n57*(-pow(alpha, n1*n24 - n121*n15)*n103*pow(n118, n18)*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n15)*pow(n118, n18)*n15*pow(n43, n18)*n64*n84 + n103*n55 + n120*n136*n84) + n107*n227*n57*(n120*n136*n40 + n40*n87)/n170 + n109*n226*n57*(n120*n139*n40 + n40*n90)/n169 - pow(n149, n18)*n57*n86*(-pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*n27*n29*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*pow(n43, n18)*n6*n64*n84 + n113 + n120*n140*n84) + n178*n224*n57*n75*(n120*n138*n40 + n40*n88) + n182*n218*n57*n86*(n120*n140*n40 + n40*n46*n6) + n189*n241*n57*(n100*n40 + n120*n141*n40) + n192*n225*n57*(n102*n40 + n120*n135*n40) + n291 - n223*n57*n98*(n11*n40*n51 + n120*n145*n40)/n166 + n242*n57*n77*(n120*n134*n40 + n40*n92)/n165 - n220*n57*n96*(n120*n142*n40 + n40*n97)/n163 + n217*n57*n76*xF[10]*(n120*n144*n40 + n40*n93)/n160 + n25*n57*n61*(pow(alpha, NP0*n1 - n1*n121)*n1*n111*n2/n118 + n2*n89)*(pow(alpha, NP0*n1 - n1*n121)*n0*n111*n17*n2/n118 + n0*n17*n2*n42)/n159;
19954  NP_b = -n183*n215*n57*n61*n89 - n199 - n24*(1.0*n183*n57*n89*xF[0]*(pow(alpha, NP0*n1 - n1*n121)*n1*n111*n2/n118 + n2*n89) + 0.5*n188*n57*xF[0]*(-pow(alpha, NP0*n1 - n1*n121)*n101*n111/n118 + n101*n78) - 1.0*n190*n228*n57 + n212 - 0.5*xTj*(n106*pow(n152, n18)*n57*(pow(alpha, NP0*n1 - n121*n9)*n111*n84*n9/n118 - pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*n27*n32*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*pow(n43, n18)*n64*n84*n9 + n117) + n109*pow(n157, n18)*n57*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n84/n118 + pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n14*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n27*n37*pow(n43, n18)*n64 + n115) + pow(n149, n18)*n57*n86*(pow(alpha, NP0*n1 - n121*n6)*n111*n17*n27*n6/n118 + pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*n17*n27*pow(n43, n18)*n6*n64 + pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*n27*n29*pow(n43, n18)*n64 + n27*n29*n79) + pow(n151, n18)*n57*n96*(pow(alpha, NP0*n1 - n121*n8)*n111*n17*n27*n8/n118 + pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n17*n27*pow(n43, n18)*n64*n8 + pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n27*n31*pow(n43, n18)*n64 + n27*n31*n80) + pow(n153, n18)*n57*n77*xF[4]*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n84/n118 + pow(alpha, n1*n24 - n10*n121)*n10*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n10*n121)*pow(n118, n18)*n27*n33*pow(n43, n18)*n64 + n27*n33*n50) + pow(n155, n18)*n57*n94*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n17*n27/n118 + pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n12*n17*n27*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n27*n35*pow(n43, n18)*n64 + n27*n35*n82) + pow(n158, n18)*n57*n74*xF[9]*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n17*n27/n118 + pow(alpha, n1*n24 - n121*n15)*n103*pow(n118, n18)*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n15)*pow(n118, n18)*n15*n17*n27*pow(n43, n18)*n64 + n103*n83) + n179*n57*n76*(pow(alpha, NP0*n1 - n121*n5)*n111*n5*n84/n118 - pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*n27*n28*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*pow(n43, n18)*n5*n64*n84 + n116) + n18*n190*n228*n57 + n18*n251*n57*n96 + n18*n252*n57*n98 + n18*n256*n57 + n188*n57*xF[0]*(-pow(alpha, NP0*n1 - n1*n121)*n101*n111/n118 + n101*n78) + n191*n57*(pow(alpha, NP0*n1 - n11*n121)*n11*n111*n84/n118 + pow(alpha, n1*n24 - n11*n121)*n11*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n11*n121)*pow(n118, n18)*pow(n43, n18)*n64*n91 + n51*n91) + n193*n57*(pow(alpha, NP0*n1 - n121*n7)*n111*n7*n84/n118 + pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n7*n84 - pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n99 + n47*n99) + n194*n57*(pow(alpha, NP0*n1 - n121*n13)*n111*n13*n84/n118 + pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*n13*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*pow(n43, n18)*n64*n95 + n53*n95) + n200 + n201 + n202 + n203 + n204 + n205 + n206 + n207 + n208 + n209 + n210 + n211 + n258 + n259 + n260 + n261 + n262 + n263 + n264 + n265 + n266 + n267 + n268 + n269 + n18*n239*n57*n74*xF[9]/n170 + n18*n238*n57*n73*xF[8]/n169 + n18*n237*n57*n72*xF[7]/n168 + n18*n236*n57*n94/n167 + n18*n233*n57*n68*xF[3]/n164 + n18*n231*n57*n66*xF[1]/n162 + n18*n230*n57*n86/n161 + n18*n229*n57*n62*xF[10]/n160)) - n57*xTj*(n106*n246 + n107*n248 + n108*n180 + n109*n249 + n110*n174 - pow(n151, n18)*n220*n96 + n171*n2*n89 + n172*n2*n93 + n173*n2*n87 + n176*n2*n90 + n179*n217*n76 + n181*n92 + n184*n88 + n185*n58 + n186*n59 + n187*n60 + n188*n25*(pow(alpha, NP0*n1 - n1*n121)*n1*n111*n2/n118 + n2*n89) + n191*n223 + n193*n219 + n194*n225 + n195 - n247*n86 + n250*n75 + n255);
19955  NP_2a = -n57*(pow(alpha, n1*n24)*n0*n101*pow(n147, n18)*n215 + pow(alpha, n1*n24)*n0*n101*pow(n214, -n0)*n25*n61/n159 - 1.0*n112*n171 + n112*n188*n25*(-1 + (-n19 + xPj*xTj)/(n118*n122*n43)) + 1.0*xTj*(n0*n17*n183*n42*xF[0]*(pow(alpha, NP0*n1 + n121*n17)*n1*n111*n2/n118 + n2*n89) + n100*pow(n150, n18)*n40*xF[1]*(pow(alpha, NP0*n1 - n121*n7)*n111*n59/n118 + n47*n59) + n102*pow(n156, n18)*n40*xF[7]*(pow(alpha, NP0*n1 - n121*n13)*n111*n60/n118 + n53*n60) + n106*pow(n152, n18)*(-pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*n27*n32*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*pow(n43, n18)*n64*n84*n9 + n117 + n120*n137*n84) + n107*pow(n158, n18)*(-pow(alpha, n1*n24 - n121*n15)*n103*pow(n118, n18)*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n15)*pow(n118, n18)*n15*pow(n43, n18)*n64*n84 + n103*n55 + n120*n136*n84) + n108*pow(n152, n18)*n40*(pow(alpha, NP0*n1 - n121*n9)*n111*n2*n9/n118 + n104*n2) + n109*pow(n157, n18)*(pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n14*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n27*n37*pow(n43, n18)*n64 + n115 + n120*n139*n84) + n11*pow(n154, n18)*n40*n51*xF[5]*(pow(alpha, NP0*n1 - n11*n121)*n111*n58/n118 + n51*n58) + n110*pow(n149, n18)*n22*(pow(alpha, NP0*n1 - n121*n6)*n111*n2*n6/n118 + n110) + n112*n171 + n113*n174 + n114*n175 + n115*n176 + n116*n172 + n117*n177 - pow(n149, n18)*n86*(-pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*n27*n29*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*pow(n43, n18)*n6*n64*n84 + n113 + n120*n140*n84) + pow(n151, n18)*n40*n97*xF[2]*(pow(alpha, NP0*n1 - n121*n8)*n111*n2*n8/n118 + n2*n97) + pow(n151, n18)*n96*(pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n17*n27*pow(n43, n18)*n64*n8 + pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n27*n31*pow(n43, n18)*n64 + n120*n142*n17*n27 + n27*n31*n80) + pow(n153, n18)*n40*n92*xF[4]*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n2/n118 + n2*n92) + pow(n153, n18)*n77*xF[4]*(pow(alpha, n1*n24 - n10*n121)*n10*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n10*n121)*pow(n118, n18)*n27*n33*pow(n43, n18)*n64 + n120*n134*n84 + n27*n33*n50) + pow(n155, n18)*n40*n88*xF[6]*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n2/n118 + n2*n88) + pow(n155, n18)*n94*(pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n12*n17*n27*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n27*n35*pow(n43, n18)*n64 + n120*n138*n17*n27 + n27*n35*n82) + pow(n157, n18)*n40*n90*xF[8]*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n2/n118 + n2*n90) + pow(n158, n18)*n40*n87*xF[9]*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n2/n118 + n2*n87) + n179*n40*n93*(pow(alpha, NP0*n1 - n121*n5)*n111*n2*n5/n118 + n2*n93) + n179*n76*(-pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*n27*n28*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*pow(n43, n18)*n5*n64*n84 + n116 + n120*n144*n84) + n18*n190*n228 + n18*n251*n96 + n18*n252*n98 + n18*n256 + n185*n91 + n186*n99 + n187*n95 + n188*n245 + n191*(pow(alpha, n1*n24 - n11*n121)*n11*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n11*n121)*pow(n118, n18)*pow(n43, n18)*n64*n91 + n120*n145*n84 + n51*n91) + n193*(pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n7*n84 - pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n99 + n120*n141*n84 + n47*n99) + n194*(pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*n13*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*pow(n43, n18)*n64*n95 + n120*n135*n84 + n53*n95) + n196 + n197 + n198 + n18*n239*n74*xF[9]/n170 + n18*n238*n73*xF[8]/n169 + n18*n237*n72*xF[7]/n168 + n18*n236*n94/n167 + n18*n233*n68*xF[3]/n164 + n18*n231*n66*xF[1]/n162 + n18*n230*n86/n161 + n18*n229*n62*xF[10]/n160));
19956  NP_sqrt_base = (-NP0*n290 - n21*(-n57*n61*xF[0]/(pow(alpha, n17*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1)) + n61 - 1) - n57*n62*xF[10]/(n62 - 1 + pow(alpha, -n5*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n66*xF[1]/(n66 - 1 + pow(alpha, -n7*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n68*xF[3]/(n68 - 1 + pow(alpha, -n9*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n69*xF[4]/(n69 - 1 + pow(alpha, -n10*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n72*xF[7]/(n72 - 1 + pow(alpha, -n13*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n73*xF[8]/(n73 - 1 + pow(alpha, -n14*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n74*xF[9]/(n74 - 1 + pow(alpha, -n15*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n86/(n65 - 1 + pow(alpha, -n6*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n94/(n71 - 1 + pow(alpha, -n12*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n96/(n67 - 1 + pow(alpha, -n8*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1))) - n57*n98/(n70 - 1 + pow(alpha, -n11*(n85*(n119 - log(n78*(n19 + n23*xTj)/(n19 + n25*xTj) + 1)) + 1)))) - n25*n57*n61/(-n143 + n61 - 1) - pow(NP0, -n0)*(1.0*n183*n240*n57*n89 - 0.5*n190*n216*n243*n57 + 0.5*n200 + 0.5*n271 - 0.5*n292*xTj))*(-n0*n200 - n0*n21*(n106*pow(n152, n18)*n57*(pow(alpha, NP0*n1 - n121*n9)*n111*n84*n9/n118 - pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*n27*n32*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*pow(n43, n18)*n64*n84*n9 + n117) + n106*n57*(pow(alpha, NP0*n1 - n121*n9)*n111*n2*n9/n118 + n104*n2)*(pow(alpha, NP0*n1 - n121*n9)*n111*n40*n9/n118 + n104*n40)/n164 + n107*pow(n158, n18)*n57*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n84/n118 - pow(alpha, n1*n24 - n121*n15)*n103*pow(n118, n18)*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n15)*pow(n118, n18)*n15*pow(n43, n18)*n64*n84 + n103*n55) + n107*n57*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n2/n118 + n2*n87)*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n40/n118 + n40*n87)/n170 + n109*pow(n157, n18)*n57*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n84/n118 + pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n14*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n27*n37*pow(n43, n18)*n64 + n115) + n109*n57*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n2/n118 + n2*n90)*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n40/n118 + n40*n90)/n169 - pow(n149, n18)*n57*n86*(pow(alpha, NP0*n1 - n121*n6)*n111*n6*n84/n118 - pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*n27*n29*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*pow(n43, n18)*n6*n64*n84 + n113) + pow(n151, n18)*n57*n96*(pow(alpha, NP0*n1 - n121*n8)*n111*n17*n27*n8/n118 + pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n17*n27*pow(n43, n18)*n64*n8 + pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n27*n31*pow(n43, n18)*n64 + n27*n31*n80) + pow(n153, n18)*n57*n77*xF[4]*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n84/n118 + pow(alpha, n1*n24 - n10*n121)*n10*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n10*n121)*pow(n118, n18)*n27*n33*pow(n43, n18)*n64 + n27*n33*n50) + pow(n155, n18)*n57*n94*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n17*n27/n118 + pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n12*n17*n27*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n27*n35*pow(n43, n18)*n64 + n27*n35*n82) + n178*n57*n75*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n2/n118 + n2*n88)*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n40/n118 + n40*n88) + n179*n57*n76*(pow(alpha, NP0*n1 - n121*n5)*n111*n5*n84/n118 - pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*n27*n28*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*pow(n43, n18)*n5*n64*n84 + n116) + n182*n57*n86*(pow(alpha, NP0*n1 - n121*n6)*n111*n2*n6/n118 + n110)*(pow(alpha, NP0*n1 - n121*n6)*n111*n40*n6/n118 + n40*n46*n6) + n188*n57*xF[0]*(pow(alpha, NP0*n1 - n1*n121)*n101*(-n19 + xPj*xTj)/(n118*n43) + n101*n78) + n189*n57*xF[1]*(pow(alpha, NP0*n1 - n121*n7)*n111*n59/n118 + n47*n59)*(pow(alpha, NP0*n1 - n121*n7)*n111*n40*n7/n118 + n100*n40) + n191*n57*(pow(alpha, NP0*n1 - n11*n121)*n11*n111*n84/n118 + pow(alpha, n1*n24 - n11*n121)*n11*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n11*n121)*pow(n118, n18)*pow(n43, n18)*n64*n91 + n51*n91) + n192*n57*(pow(alpha, NP0*n1 - n121*n13)*n111*n60/n118 + n53*n60)*(pow(alpha, NP0*n1 - n121*n13)*n111*n13*n40/n118 + n102*n40) + n193*n57*(pow(alpha, NP0*n1 - n121*n7)*n111*n7*n84/n118 + pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n7*n84 - pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n99 + n47*n99) + n194*n57*(pow(alpha, NP0*n1 - n121*n13)*n111*n13*n84/n118 + pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*n13*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*pow(n43, n18)*n64*n95 + n53*n95) + n200 + n201 + n202 + n203 + n204 + n205 + n206 + n207 + n208 + n209 + n210 + n211 + n258 + n259 + n260 + n261 + n262 + n263 + n264 + n265 + n266 + n267 + n268 + n269 - n57*n98*(pow(alpha, NP0*n1 - n11*n121)*n111*n58/n118 + n51*n58)*(pow(alpha, NP0*n1 - n11*n121)*n11*n111*n40/n118 + n11*n40*n51)/n166 + n57*n77*xF[4]*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n2/n118 + n2*n92)*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n40/n118 + n40*n92)/n165 - n57*n96*(pow(alpha, NP0*n1 - n121*n8)*n111*n2*n8/n118 + n2*n97)*(pow(alpha, NP0*n1 - n121*n8)*n111*n40*n8/n118 + n40*n97)/n163 + n57*n76*xF[10]*(pow(alpha, NP0*n1 - n121*n5)*n111*n2*n5/n118 + n2*n93)*(pow(alpha, NP0*n1 - n121*n5)*n111*n40*n5/n118 + n40*n93)/n160 + n25*n57*n61*(pow(alpha, NP0*n1 - n1*n121)*n1*n111*n2/n118 + n2*n89)*(pow(alpha, NP0*n1 - n1*n121)*n0*n111*n17*n2/n118 + n0*n17*n2*n42)/n159) - n0*n271 + 4.0*n183*n240*n57*n89 - 4.0*n190*n228*n57) + pow(-n24*(1.0*n183*n57*n89*xF[0]*(pow(alpha, NP0*n1 - n1*n121)*n1*n111*n2/n118 + n2*n89) + 0.5*n188*n57*xF[0]*(-pow(alpha, NP0*n1 - n1*n121)*n101*n111/n118 + n101*n78) - 0.5*n190*n57*(pow(alpha, NP0*n1 - n1*n121)*n1*n111*n2/n118 + n2*n89)*(pow(alpha, NP0*n1 - n1*n121)*n0*n111*n17*n2/n118 + n0*n17*n2*n42) + n212 - 0.5*xTj*(n106*pow(n152, n18)*n57*(pow(alpha, NP0*n1 - n121*n9)*n111*n84*n9/n118 - pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*n27*n32*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n9)*pow(n118, n18)*pow(n43, n18)*n64*n84*n9 + n117) + n106*n57*(pow(alpha, NP0*n1 - n121*n9)*n111*n2*n9/n118 + n104*n2)*(pow(alpha, NP0*n1 - n121*n9)*n111*n40*n9/n118 + n104*n40)/n164 + n107*pow(n158, n18)*n57*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n84/n118 - pow(alpha, n1*n24 - n121*n15)*n103*pow(n118, n18)*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n15)*pow(n118, n18)*n15*pow(n43, n18)*n64*n84 + n103*n55) + n107*n57*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n2/n118 + n2*n87)*(pow(alpha, NP0*n1 - n121*n15)*n111*n15*n40/n118 + n40*n87)/n170 + n109*pow(n157, n18)*n57*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n84/n118 + pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n14*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n14)*pow(n118, n18)*n27*n37*pow(n43, n18)*n64 + n115) + n109*n57*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n2/n118 + n2*n90)*(pow(alpha, NP0*n1 - n121*n14)*n111*n14*n40/n118 + n40*n90)/n169 - pow(n149, n18)*n57*n86*(pow(alpha, NP0*n1 - n121*n6)*n111*n6*n84/n118 - pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*n27*n29*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n6)*pow(n118, n18)*pow(n43, n18)*n6*n64*n84 + n113) + pow(n151, n18)*n57*n96*(pow(alpha, NP0*n1 - n121*n8)*n111*n17*n27*n8/n118 + pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n17*n27*pow(n43, n18)*n64*n8 + pow(alpha, n1*n24 - n121*n8)*pow(n118, n18)*n27*n31*pow(n43, n18)*n64 + n27*n31*n80) + pow(n153, n18)*n57*n77*xF[4]*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n84/n118 + pow(alpha, n1*n24 - n10*n121)*n10*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n10*n121)*pow(n118, n18)*n27*n33*pow(n43, n18)*n64 + n27*n33*n50) + pow(n155, n18)*n57*n94*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n17*n27/n118 + pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n12*n17*n27*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n12*n121)*pow(n118, n18)*n27*n35*pow(n43, n18)*n64 + n27*n35*n82) + n178*n57*n75*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n2/n118 + n2*n88)*(pow(alpha, NP0*n1 - n12*n121)*n111*n12*n40/n118 + n40*n88) + n179*n57*n76*(pow(alpha, NP0*n1 - n121*n5)*n111*n5*n84/n118 - pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*n27*n28*pow(n43, n18)*n64 + pow(alpha, n1*n24 - n121*n5)*pow(n118, n18)*pow(n43, n18)*n5*n64*n84 + n116) + n182*n57*n86*(pow(alpha, NP0*n1 - n121*n6)*n111*n2*n6/n118 + n110)*(pow(alpha, NP0*n1 - n121*n6)*n111*n40*n6/n118 + n40*n46*n6) + n188*n57*xF[0]*(-pow(alpha, NP0*n1 - n1*n121)*n101*n111/n118 + n101*n78) + n189*n57*xF[1]*(pow(alpha, NP0*n1 - n121*n7)*n111*n59/n118 + n47*n59)*(pow(alpha, NP0*n1 - n121*n7)*n111*n40*n7/n118 + n100*n40) + n191*n57*(pow(alpha, NP0*n1 - n11*n121)*n11*n111*n84/n118 + pow(alpha, n1*n24 - n11*n121)*n11*pow(n118, n18)*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n11*n121)*pow(n118, n18)*pow(n43, n18)*n64*n91 + n51*n91) + n192*n57*(pow(alpha, NP0*n1 - n121*n13)*n111*n60/n118 + n53*n60)*(pow(alpha, NP0*n1 - n121*n13)*n111*n13*n40/n118 + n102*n40) + n193*n57*(pow(alpha, NP0*n1 - n121*n7)*n111*n7*n84/n118 + pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n7*n84 - pow(alpha, n1*n24 - n121*n7)*pow(n118, n18)*pow(n43, n18)*n64*n99 + n47*n99) + n194*n57*(pow(alpha, NP0*n1 - n121*n13)*n111*n13*n84/n118 + pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*n13*pow(n43, n18)*n64*n84 - pow(alpha, n1*n24 - n121*n13)*pow(n118, n18)*pow(n43, n18)*n64*n95 + n53*n95) + n200 + n201 + n202 + n203 + n204 + n205 + n206 + n207 + n208 + n209 + n210 + n211 + n258 + n259 + n260 + n261 + n262 + n263 + n264 + n265 + n266 + n267 + n268 + n269 - n57*n98*(pow(alpha, NP0*n1 - n11*n121)*n111*n58/n118 + n51*n58)*(pow(alpha, NP0*n1 - n11*n121)*n11*n111*n40/n118 + n11*n40*n51)/n166 + n57*n77*xF[4]*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n2/n118 + n2*n92)*(pow(alpha, NP0*n1 - n10*n121)*n10*n111*n40/n118 + n40*n92)/n165 - n57*n96*(pow(alpha, NP0*n1 - n121*n8)*n111*n2*n8/n118 + n2*n97)*(pow(alpha, NP0*n1 - n121*n8)*n111*n40*n8/n118 + n40*n97)/n163 + n57*n76*xF[10]*(pow(alpha, NP0*n1 - n121*n5)*n111*n2*n5/n118 + n2*n93)*(pow(alpha, NP0*n1 - n121*n5)*n111*n40*n5/n118 + n40*n93)/n160 + n25*n57*n61*(pow(alpha, NP0*n1 - n1*n121)*n1*n111*n2/n118 + n2*n89)*(pow(alpha, NP0*n1 - n1*n121)*n0*n111*n17*n2/n118 + n0*n17*n2*n42)/n159)) - n290, -n0);
19957  NP_sqrt_base = fabs(NP_sqrt_base);
19958  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
19959  NT1 = n85*(n119 - log(-pow(alpha, NP1*n1)*n111 + 1));
19960  g0 = MW[1] - Mstar;
19961  g1 = MW[0] - Mstar;
19962  g2 = NT1 + 1;
19963  g3 = xPj - xTj;
19964  g4 = MW[10] - Mstar;
19965  g5 = MW[11] - Mstar;
19966  g6 = MW[2] - Mstar;
19967  g7 = MW[3] - Mstar;
19968  g8 = MW[4] - Mstar;
19969  g9 = MW[5] - Mstar;
19970  g10 = MW[6] - Mstar;
19971  g11 = MW[7] - Mstar;
19972  g12 = MW[8] - Mstar;
19973  g13 = MW[9] - Mstar;
19974  g14 = xF[0] - xTj;
19975  g15 = xF[0] - xPj;
19976  g16 = -xTj;
19977  g17 = 1.0*xF[4];
19978  g18 = xPj/xF[1];
19979  g19 = pow(alpha, -g1);
19980  g20 = pow(alpha, -g4);
19981  g21 = pow(alpha, -g5);
19982  g22 = pow(alpha, -g0);
19983  g23 = pow(alpha, -g6);
19984  g24 = pow(alpha, -g7);
19985  g25 = pow(alpha, -g8);
19986  g26 = pow(alpha, -g9);
19987  g27 = pow(alpha, -g10);
19988  g28 = pow(alpha, -g11);
19989  g29 = pow(alpha, -g12);
19990  g30 = pow(alpha, -g13);
19991  g31 = log(xF[0]/xF[1]);
19992  g32 = -g2;
19993  g33 = pow(alpha, NP1*g0);
19994  g34 = pow(alpha, NP1*g1);
19995  g35 = pow(alpha, NP1*g4);
19996  g36 = log(g19);
19997  g37 = pow(alpha, NP1*g5);
19998  g38 = pow(alpha, NP1*g6);
19999  g39 = pow(alpha, NP1*g7);
20000  g40 = pow(alpha, NP1*g8);
20001  g41 = pow(alpha, NP1*g9);
20002  g42 = pow(alpha, NP1*g10);
20003  g43 = pow(alpha, NP1*g11);
20004  g44 = pow(alpha, NP1*g12);
20005  g45 = pow(alpha, NP1*g13);
20006  g46 = -g31;
20007  g47 = g14/g3;
20008  g48 = g3/g14;
20009  g49 = -g33 + 1;
20010  g50 = -g33 + 1;
20011  g51 = -g34 + 1;
20012  g52 = -g35 + 1;
20013  g53 = -g37 + 1;
20014  g54 = -g38 + 1;
20015  g55 = -g39 + 1;
20016  g56 = -g40 + 1;
20017  g57 = -g41 + 1;
20018  g58 = -g42 + 1;
20019  g59 = -g43 + 1;
20020  g60 = -g44 + 1;
20021  g61 = -g45 + 1;
20022  g62 = -g34;
20023  g63 = -g35;
20024  g64 = -g37;
20025  g65 = -g38;
20026  g66 = -g39;
20027  g67 = -g40;
20028  g68 = -g41;
20029  g69 = -g42;
20030  g70 = -g43;
20031  g71 = -g44;
20032  g72 = -g45;
20033  g73 = -1.0*g31;
20034  g74 = -g3/g15;
20035  g75 = g15/(g3*xF[1]);
20036  g76 = g73*xF[0];
20037  g77 = g73*xF[10];
20038  g78 = g73*xF[11];
20039  g79 = g73*xF[1];
20040  g80 = g73*xF[2];
20041  g81 = g73*xF[3];
20042  g82 = g73*xF[4];
20043  g83 = g73*xF[5];
20044  g84 = g73*xF[6];
20045  g85 = g73*xF[7];
20046  g86 = g73*xF[8];
20047  g87 = g73*xF[9];
20048  g88 = pow(alpha, g0*g32) - 1;
20049  g89 = pow(alpha, g0*g32) - 1;
20050  g90 = pow(alpha, g1*g32) - 1;
20051  g91 = pow(alpha, g32*g4) - 1;
20052  g92 = pow(alpha, g32*g5) - 1;
20053  g93 = pow(alpha, g32*g6) - 1;
20054  g94 = pow(alpha, g32*g7) - 1;
20055  g95 = pow(alpha, g32*g8) - 1;
20056  g96 = pow(alpha, g32*g9) - 1;
20057  g97 = pow(alpha, g10*g32) - 1;
20058  g98 = pow(alpha, g11*g32) - 1;
20059  g99 = pow(alpha, g12*g32) - 1;
20060  g100 = pow(alpha, g13*g32) - 1;
20061  g101 = -pow(alpha, g1*g32);
20062  g102 = -pow(alpha, g32*g4);
20063  g103 = -pow(alpha, g32*g5);
20064  g104 = -pow(alpha, g32*g6);
20065  g105 = -pow(alpha, g32*g7);
20066  g106 = -pow(alpha, g32*g8);
20067  g107 = -pow(alpha, g32*g9);
20068  g108 = -pow(alpha, g10*g32);
20069  g109 = -pow(alpha, g11*g32);
20070  g110 = -pow(alpha, g12*g32);
20071  g111 = -pow(alpha, g13*g32);
20072  g112 = g50 + g89;
20073  g113 = -g101 - g34;
20074  g114 = -g102 - g35;
20075  g115 = -g103 - g37;
20076  g116 = -g104 - g38;
20077  g117 = -g105 - g39;
20078  g118 = -g106 - g40;
20079  g119 = -g107 - g41;
20080  g120 = -g108 - g42;
20081  g121 = -g109 - g43;
20082  g122 = -g110 - g44;
20083  g123 = -g111 - g45;
20084  g124 = pow(alpha, g1*g32) + g62;
20085  g125 = g50 + g89;
20086  g126 = pow(alpha, g32*g4) + g63;
20087  g127 = pow(alpha, g32*g5) + g64;
20088  g128 = pow(alpha, g32*g6) + g65;
20089  g129 = pow(alpha, g32*g7) + g66;
20090  g130 = pow(alpha, g32*g8) + g67;
20091  g131 = pow(alpha, g32*g9) + g68;
20092  g132 = pow(alpha, g10*g32) + g69;
20093  g133 = pow(alpha, g11*g32) + g70;
20094  g134 = pow(alpha, g12*g32) + g71;
20095  g135 = pow(alpha, g13*g32) + g72;
20096  g136 = xF[11]/g127;
20097  g137 = xF[9]/g135;
20098  g138 = xF[8]/g134;
20099  g139 = xF[1]/g125;
20100  g140 = xF[3]/g129;
20101  g141 = xF[10]/g126;
20102  g142 = xF[6]/g132;
20103  g143 = xF[7]/g133;
20104  g144 = xF[5]/g131;
20105  g145 = xF[2]/g128;
20106  g146 = xF[0]/g124;
20107  g147 = xF[4]/g118;
20108  g148 = xF[1]/g112;
20109  g149 = xF[0]/g113;
20110  g150 = xF[9]/g123;
20111  g151 = xF[6]/g120;
20112  g152 = xF[7]/g121;
20113  g153 = xF[2]/g116;
20114  g154 = xF[11]/g115;
20115  g155 = xF[5]/g119;
20116  g156 = xF[3]/g117;
20117  g157 = xF[8]/g122;
20118  g158 = xF[10]/g114;
20119  g159 = 1.0*g149;
20120  g160 = 1.0*g151;
20121  g161 = 1.0*g153;
20122  g162 = 1.0*g154;
20123  g163 = 1.0*g155;
20124  g164 = 1.0*g150;
20125  g165 = 1.0*g157;
20126  g166 = 1.0*g158;
20127  g167 = 1.0*g156;
20128  g168 = 1.0*g148;
20129  g169 = 1.0*g152;
20130  g170 = g58/g120;
20131  g171 = g61/g123;
20132  g172 = g56/g118;
20133  g173 = g59/g121;
20134  g174 = g51/g113;
20135  g175 = g57/g119;
20136  g176 = g55/g117;
20137  g177 = g49/g112;
20138  g178 = g53/g115;
20139  g179 = g54/g116;
20140  g180 = g52/g114;
20141  g181 = g60/g122;
20142  g182 = g147*g56;
20143  g183 = g150*g61;
20144  g184 = g149*g51;
20145  g185 = g152*g59;
20146  g186 = g153*g54;
20147  g187 = g157*g60;
20148  g188 = g156*g55;
20149  g189 = g148*g49;
20150  g190 = g155*g57;
20151  g191 = g154*g53;
20152  g192 = g151*g58;
20153  g193 = g158*g52;
20154  g194 = g88/g112;
20155  g195 = g90/g113;
20156  g196 = g92/g115;
20157  g197 = g93/g116;
20158  g198 = g94/g117;
20159  g199 = g95/g118;
20160  g200 = g99/g122;
20161  g201 = g100/g123;
20162  g202 = g97/g120;
20163  g203 = g98/g121;
20164  g204 = g91/g114;
20165  g205 = g96/g119;
20166  g206 = g148*g88;
20167  g207 = g149*g90;
20168  g208 = g151*g97;
20169  g209 = g153*g93;
20170  g210 = g154*g92;
20171  g211 = g155*g96;
20172  g212 = g100*g150;
20173  g213 = g156*g94;
20174  g214 = g157*g99;
20175  g215 = g158*g91;
20176  g216 = g152*g98;
20177  g217 = log(g125*g16*g75/g50);
20178  g218 = log(g112*g16*g75/g49);
20179  g219 = log(g125*g18*g47/g89);
20180  g220 = 1.0*g217;
20181  g221 = log(g112*g18*g47/g88);
20182  g222 = 1.0*g219;
20183  g223 = g172*g218;
20184  g224 = g170*g218;
20185  g225 = g171*g218;
20186  g226 = g174*g218;
20187  g227 = g175*g218;
20188  g228 = g179*g218;
20189  g229 = g181*g218;
20190  g230 = g178*g218;
20191  g231 = g176*g218;
20192  g232 = g180*g218;
20193  g233 = g177*g218;
20194  g234 = g173*g218;
20195  g235 = g202*g221;
20196  g236 = g196*g221;
20197  g237 = g198*g221;
20198  g238 = g195*g221;
20199  g239 = g197*g221;
20200  g240 = g205*g221;
20201  g241 = g200*g221;
20202  g242 = g201*g221;
20203  g243 = g204*g221;
20204  g244 = g194*g221;
20205  g245 = g203*g221;
20206  g246 = g199*g221;
20207  g247 = g76 + g77 + g78 + g79 + g80 + g81 + g82 + g83 + g84 + g85 + g86 + g87;
20208  LpF = xF[0]*(g19 + 1.0)*(g226 + g238 + g46)/(g36*(g19 - 1.0)) + xF[10]*(g20 + 1.0)*(g232 + g243 + g46)/(g36*(g20 - 1.0)) + xF[11]*(g21 + 1.0)*(g230 + g236 + g46)/(g36*(g21 - 1.0)) + xF[1]*(g22 + 1.0)*(g233 + g244 + g46)/(g36*(g22 - 1.0)) + xF[2]*(g23 + 1.0)*(g228 + g239 + g46)/(g36*(g23 - 1.0)) + xF[3]*(g24 + 1.0)*(g231 + g237 + g46)/(g36*(g24 - 1.0)) + xF[4]*(g25 + 1.0)*(g223 + g246 + g46)/(g36*(g25 - 1.0)) + xF[5]*(g26 + 1.0)*(g227 + g240 + g46)/(g36*(g26 - 1.0)) + xF[6]*(g27 + 1.0)*(g224 + g235 + g46)/(g36*(g27 - 1.0)) + xF[7]*(g28 + 1.0)*(g234 + g245 + g46)/(g36*(g28 - 1.0)) + xF[8]*(g29 + 1.0)*(g229 + g241 + g46)/(g36*(g29 - 1.0)) + xF[9]*(g30 + 1.0)*(g225 + g242 + g46)/(g36*(g30 - 1.0));
20209  PpF = g47;
20210  TpF = -g15/g3;
20211  SWUpF = -g136*g220*(g64 + 1) - g136*g222*(pow(alpha, g32*g5) - 1) - g137*g220*(g72 + 1) - g137*g222*(pow(alpha, g13*g32) - 1) - g138*g220*(g71 + 1) - g138*g222*(pow(alpha, g12*g32) - 1) - g139*g220*g50 - g139*g222*g89 - g140*g220*(g66 + 1) - g140*g222*(pow(alpha, g32*g7) - 1) - g141*g220*(g63 + 1) - g141*g222*(pow(alpha, g32*g4) - 1) - g142*g220*(g69 + 1) - g142*g222*(pow(alpha, g10*g32) - 1) - g143*g220*(g70 + 1) - g143*g222*(pow(alpha, g11*g32) - 1) - g144*g220*(g68 + 1) - g144*g222*(pow(alpha, g32*g9) - 1) - g145*g220*(g65 + 1) - g145*g222*(pow(alpha, g32*g6) - 1) - g146*g220*(g62 + 1) - g146*g222*(pow(alpha, g1*g32) - 1) - g247 - g17*g217*(g67 + 1)/g130 - g17*g219*(pow(alpha, g32*g8) - 1)/g130;
20212  SWUpP = -g48*(g100*g164*g221 + g159*g218*g51 + g159*g221*g90 + g160*g218*g58 + g160*g221*g97 + g161*g218*g54 + g161*g221*g93 + g162*g218*g53 + g162*g221*g92 + g163*g218*g57 + g163*g221*g96 + g164*g218*g61 + g165*g218*g60 + g165*g221*g99 + g166*g218*g52 + g166*g221*g91 + g167*g218*g55 + g167*g221*g94 + g168*g218*g49 + g168*g221*g88 + g169*g218*g59 + g169*g221*g98 + g17*g223 + g17*g246 + g247);
20213  xP[0] = g207*g48;
20214  xP[1] = g206*g48;
20215  xP[2] = g209*g48;
20216  xP[3] = g213*g48;
20217  xP[4] = g147*g48*g95;
20218  xP[5] = g211*g48;
20219  xP[6] = g208*g48;
20220  xP[7] = g216*g48;
20221  xP[8] = g214*g48;
20222  xP[9] = g212*g48;
20223  xP[10] = g215*g48;
20224  xP[11] = g210*g48;
20225  xT[0] = g184*g74;
20226  xT[1] = g189*g74;
20227  xT[2] = g186*g74;
20228  xT[3] = g188*g74;
20229  xT[4] = g182*g74;
20230  xT[5] = g190*g74;
20231  xT[6] = g192*g74;
20232  xT[7] = g185*g74;
20233  xT[8] = g187*g74;
20234  xT[9] = g183*g74;
20235  xT[10] = g193*g74;
20236  xT[11] = g191*g74;
20237  break;
20238  case 13:
20239  n0 = -0.500000000000000;
20240  n1 = -2.00000000000000;
20241  n2 = MW[0] - Mstar;
20242  n3 = log(alpha);
20243  n4 = xPj - xTj;
20244  n5 = xF[0] - xPj;
20245  n6 = MW[10] - Mstar;
20246  n7 = MW[11] - Mstar;
20247  n8 = MW[12] - Mstar;
20248  n9 = MW[1] - Mstar;
20249  n10 = MW[2] - Mstar;
20250  n11 = MW[3] - Mstar;
20251  n12 = MW[4] - Mstar;
20252  n13 = MW[5] - Mstar;
20253  n14 = MW[6] - Mstar;
20254  n15 = MW[7] - Mstar;
20255  n16 = MW[8] - Mstar;
20256  n17 = MW[9] - Mstar;
20257  n18 = log(xTj);
20258  n19 = -n2;
20259  n20 = -2;
20260  n21 = xF[0]*xPj;
20261  n22 = -Mstar;
20262  n23 = -n1*xF[11];
20263  n24 = -xTj;
20264  n25 = -NP0*n1;
20265  n26 = pow(n2, -n1);
20266  n27 = pow(n3, -n1);
20267  n28 = pow(n6, -n1);
20268  n29 = pow(n7, -n1);
20269  n30 = pow(n8, -n1);
20270  n31 = pow(n9, -n1);
20271  n32 = pow(n10, -n1);
20272  n33 = pow(n11, -n1);
20273  n34 = pow(n12, -n1);
20274  n35 = pow(n13, -n1);
20275  n36 = pow(n14, -n1);
20276  n37 = pow(n15, -n1);
20277  n38 = pow(n16, -n1);
20278  n39 = pow(n17, -n1);
20279  n40 = Mstar*n3;
20280  n41 = -n1*n3;
20281  n42 = pow(alpha, NP0*n2);
20282  n43 = n21 + n24*xF[0];
20283  n44 = n21 + n24*xPj;
20284  n45 = pow(alpha, NP0*n6);
20285  n46 = pow(alpha, NP0*n7);
20286  n47 = pow(alpha, NP0*n8);
20287  n48 = pow(alpha, NP0*n9);
20288  n49 = pow(alpha, NP0*n10);
20289  n50 = pow(alpha, NP0*n11);
20290  n51 = pow(alpha, NP0*n12);
20291  n52 = pow(alpha, NP0*n13);
20292  n53 = pow(alpha, NP0*n14);
20293  n54 = pow(alpha, NP0*n15);
20294  n55 = pow(alpha, NP0*n16);
20295  n56 = pow(alpha, NP0*n17);
20296  n57 = -MW[0]*n3;
20297  n58 = n4/n5;
20298  n59 = n13*n3;
20299  n60 = n3*n9;
20300  n61 = -n33;
20301  n62 = n2*n3;
20302  n63 = n15*n3;
20303  n64 = -n42 + 1;
20304  n65 = -n45 + 1;
20305  n66 = pow(alpha, NP0*n1*n19);
20306  n67 = pow(n44, -n1);
20307  n68 = -n46 + 1;
20308  n69 = -n47 + 1;
20309  n70 = -n48 + 1;
20310  n71 = -n49 + 1;
20311  n72 = -n50 + 1;
20312  n73 = -n51 + 1;
20313  n74 = -n52 + 1;
20314  n75 = -n53 + 1;
20315  n76 = -n54 + 1;
20316  n77 = -n55 + 1;
20317  n78 = -n56 + 1;
20318  n79 = -n72;
20319  n80 = -n75;
20320  n81 = -n73;
20321  n82 = -n42;
20322  n83 = -n46;
20323  n84 = -n47;
20324  n85 = -n49;
20325  n86 = -n52;
20326  n87 = -n53;
20327  n88 = -n56;
20328  n89 = n42*xF[0];
20329  n90 = 1.0/n62;
20330  n91 = n68*xF[11];
20331  n92 = n11*n50;
20332  n93 = n14*n53;
20333  n94 = n16*n55;
20334  n95 = n27*n35;
20335  n96 = n3*n51;
20336  n97 = n26*n27;
20337  n98 = n2*n42;
20338  n99 = n27*n37;
20339  n100 = n10*n49;
20340  n101 = n71*xF[2];
20341  n102 = n64*xF[0];
20342  n103 = n17*n56;
20343  n104 = n27*n30;
20344  n105 = n27*n31;
20345  n106 = n45*n6;
20346  n107 = n48*n9;
20347  n108 = n74*xF[5];
20348  n109 = n47*n8;
20349  n110 = n15*n54;
20350  n111 = n27*n39;
20351  n112 = log((-1.0 + xPj/xF[0])/n4);
20352  n113 = -n69*xF[12];
20353  n114 = -n78*xF[9];
20354  n115 = n106*xF[10];
20355  n116 = -n65*xF[10];
20356  n117 = -n77*xF[8];
20357  n118 = -n76*xF[7];
20358  n119 = n3*n46*n7;
20359  n120 = n44/n43;
20360  n121 = n109*n3*xF[12];
20361  n122 = n27*n29*n46;
20362  n123 = n27*n32*n49;
20363  n124 = n27*n38*n55;
20364  n125 = n27*n34*n51;
20365  n126 = n27*n28*n45;
20366  n127 = n27*n36*n53;
20367  n128 = n27*n33*n50;
20368  n129 = n120*n82 + 1;
20369  n130 = n112 + n18 + n40 + n57;
20370  n131 = n120/n129;
20371  n132 = n131*n27;
20372  n133 = n131*n3*n42;
20373  n134 = n90*(n130 - log(n129)) + 1;
20374  n135 = pow(alpha, n134*n2);
20375  n136 = pow(alpha, n134*n6);
20376  n137 = pow(alpha, n134*n7);
20377  n138 = pow(alpha, n134*n8);
20378  n139 = pow(alpha, n134*n9);
20379  n140 = pow(alpha, n10*n134);
20380  n141 = pow(alpha, n11*n134);
20381  n142 = pow(alpha, n12*n134);
20382  n143 = pow(alpha, n13*n134);
20383  n144 = pow(alpha, n134*n14);
20384  n145 = pow(alpha, n134*n15);
20385  n146 = pow(alpha, n134*n16);
20386  n147 = pow(alpha, n134*n17);
20387  n148 = n8/n138;
20388  n149 = n15/n145;
20389  n150 = n17/n147;
20390  n151 = n11/n141;
20391  n152 = n14/n144;
20392  n153 = n16/n146;
20393  n154 = n7/n137;
20394  n155 = n9/n139;
20395  n156 = n10/n140;
20396  n157 = n6/n136;
20397  n158 = n12/n142;
20398  n159 = n13/n143;
20399  n160 = n29/n137;
20400  n161 = n42/n143;
20401  n162 = pow(alpha, n134*n19) + n64 - 1;
20402  n163 = n65 - 1 + 1.0/n136;
20403  n164 = n68 - 1 + 1.0/n137;
20404  n165 = n69 - 1 + 1.0/n138;
20405  n166 = n70 - 1 + 1.0/n139;
20406  n167 = n71 - 1 + 1.0/n140;
20407  n168 = n72 - 1 + 1.0/n141;
20408  n169 = n73 - 1 + 1.0/n142;
20409  n170 = n74 - 1 + 1.0/n143;
20410  n171 = n75 - 1 + 1.0/n144;
20411  n172 = n76 - 1 + 1.0/n145;
20412  n173 = n77 - 1 + 1.0/n146;
20413  n174 = n78 - 1 + 1.0/n147;
20414  n175 = pow(n162, 3);
20415  n176 = pow(n163, 3);
20416  n177 = pow(n164, 3);
20417  n178 = pow(n165, 3);
20418  n179 = pow(n166, 3);
20419  n180 = pow(n167, 3);
20420  n181 = pow(n168, 3);
20421  n182 = pow(n169, 3);
20422  n183 = pow(n170, 3);
20423  n184 = pow(n171, 3);
20424  n185 = pow(n172, 3);
20425  n186 = pow(n173, 3);
20426  n187 = pow(n174, 3);
20427  n188 = xF[2]/n167;
20428  n189 = xF[11]/n164;
20429  n190 = xF[4]/n169;
20430  n191 = xF[3]/n168;
20431  n192 = xF[8]/n173;
20432  n193 = xF[6]/n171;
20433  n194 = xF[10]/n163;
20434  n195 = pow(n168, n20)*xF[3];
20435  n196 = xF[6]/n184;
20436  n197 = n3/n163;
20437  n198 = -1/n162;
20438  n199 = xF[4]/n182;
20439  n200 = n3*xF[9]/n174;
20440  n201 = n52*xF[5]/n170;
20441  n202 = n48*xF[1]/n166;
20442  n203 = n54*xF[7]/n172;
20443  n204 = n47*xF[12]/n165;
20444  n205 = n70/n179;
20445  n206 = pow(n162, n20)*n64;
20446  n207 = -n108*pow(n170, n20);
20447  n208 = n118/n185;
20448  n209 = -pow(n166, n20)*n70*xF[1];
20449  n210 = n111*n56*xF[9]/n174;
20450  n211 = n58*n89/(n162*n90);
20451  n212 = n19*n3*n58*n89/n162;
20452  n213 = n58*n89*n97/n162;
20453  n214 = n126*n194*n58;
20454  n215 = n122*n189*n58;
20455  n216 = n104*n204*n58;
20456  n217 = n105*n202*n58;
20457  n218 = n123*n188*n58;
20458  n219 = n128*n191*n58;
20459  n220 = n125*n190*n58;
20460  n221 = n201*n58*n95;
20461  n222 = n127*n193*n58;
20462  n223 = n203*n58*n99;
20463  n224 = n124*n192*n58;
20464  n225 = n210*n58;
20465  n226 = n0*n58*n82*n97*xF[0]/n162;
20466  n227 = n131/n135 + 1;
20467  n228 = n131*n42/(n135*n90) + n42/n90;
20468  n229 = n106*n3 + n133*n157;
20469  n230 = n119 + n133*n154;
20470  n231 = n109*n3 + n133*n148;
20471  n232 = n131*n42*n60/n139 + n48*n60;
20472  n233 = n100*n3 + n133*n156;
20473  n234 = n133*n151 + n3*n92;
20474  n235 = n12*n96 + n133*n158;
20475  n236 = n131*n161*n59 + n52*n59;
20476  n237 = n133*n152 + n3*n93;
20477  n238 = n131*n42*n63/n145 + n54*n63;
20478  n239 = n133*n153 + n3*n94;
20479  n240 = n103*n3 + n133*n150;
20480  n241 = pow(n228, -n1);
20481  n242 = pow(n229, -n1);
20482  n243 = pow(n230, -n1);
20483  n244 = pow(n231, -n1);
20484  n245 = pow(n232, -n1);
20485  n246 = pow(n233, -n1);
20486  n247 = pow(n234, -n1);
20487  n248 = pow(n235, -n1);
20488  n249 = pow(n236, -n1);
20489  n250 = pow(n237, -n1);
20490  n251 = pow(n238, -n1);
20491  n252 = pow(n239, -n1);
20492  n253 = pow(n240, -n1);
20493  n254 = n232*xF[1];
20494  n255 = n1*n133*n19/n135 + n1*n19*n3*n42;
20495  n256 = n245*xF[1];
20496  n257 = n131*n82*n97/n135 + n82*n97;
20497  n258 = pow(n165, n20)*n231;
20498  n259 = pow(n162, n20)*n228;
20499  n260 = pow(n164, n20)*n230;
20500  n261 = pow(n174, n20)*n240;
20501  n262 = pow(n163, n20)*n229;
20502  n263 = pow(n172, n20)*n238;
20503  n264 = pow(n173, n20)*n239;
20504  n265 = pow(n171, n20)*n237*xF[6];
20505  n266 = n241/n175;
20506  n267 = n246/n180;
20507  n268 = pow(n169, n20)*n235*xF[4];
20508  n269 = n249/n183;
20509  n270 = n243/n177;
20510  n271 = pow(n162, n20)*n257;
20511  n272 = -n102*n259*n58;
20512  n273 = n1*pow(n162, n20)*n19*n3*n58*n89*(pow(alpha, NP0*n2 + n134*n19)*n131/n90 + n42/n90);
20513  n274 = n115*pow(n163, n20)*n41*n58*(pow(alpha, NP0*n2 - n134*n6)*n131*n3*n6 + n106*n3);
20514  n275 = n119*pow(n164, n20)*n23*n58*(pow(alpha, NP0*n2 - n134*n7)*n131*n3*n7 + n119);
20515  n276 = n109*pow(n165, n20)*n41*n58*xF[12]*(pow(alpha, NP0*n2 - n134*n8)*n131*n3*n8 + n109*n3);
20516  n277 = n107*pow(n166, n20)*n41*n58*xF[1]*(pow(alpha, NP0*n2 - n134*n9)*n131*n60 + n48*n60);
20517  n278 = n100*pow(n167, n20)*n41*n58*xF[2]*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n3 + n100*n3);
20518  n279 = n195*n41*n58*n92*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n3 + n3*n92);
20519  n280 = n12*pow(n169, n20)*n41*n51*n58*xF[4]*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n3 + n12*n96);
20520  n281 = n13*pow(n170, n20)*n41*n52*n58*xF[5]*(pow(alpha, NP0*n2 - n13*n134)*n131*n59 + n52*n59);
20521  n282 = pow(n171, n20)*n41*n58*n93*xF[6]*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n3 + n3*n93);
20522  n283 = n110*pow(n172, n20)*n41*n58*xF[7]*(pow(alpha, NP0*n2 - n134*n15)*n131*n63 + n54*n63);
20523  n284 = pow(n173, n20)*n41*n58*n94*xF[8]*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n3 + n3*n94);
20524  n285 = n103*pow(n174, n20)*n41*n58*xF[9]*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n3 + n103*n3);
20525  n286 = 1.0*n259*n58*n89/n90;
20526  n287 = n102*n271*n58;
20527  n288 = -n0*n287;
20528  n289 = n211 + n272;
20529  n290 = n228*n255/n175;
20530  n291 = pow(alpha, n2*n25)*pow(n129, n20)*n157*n2*n27*pow(n43, n20)*n67 - pow(alpha, n2*n25)*pow(n129, n20)*n27*n28*pow(n43, n20)*n67/n136 + n126 + n132*n157*n98;
20531  n292 = pow(alpha, n2*n25)*pow(n129, n20)*n154*n19*n27*pow(n43, n20)*n67 + pow(alpha, n2*n25)*pow(n129, n20)*n160*n27*pow(n43, n20)*n67 + n132*n154*n19*n42 + n27*n29*n83;
20532  n293 = pow(alpha, n2*n25)*n104*pow(n129, n20)*pow(n43, n20)*n67/n138 + pow(alpha, n2*n25)*pow(n129, n20)*n148*n19*n27*pow(n43, n20)*n67 + n104*n84 + n132*n148*n19*n42;
20533  n294 = pow(alpha, n2*n25)*pow(n129, n20)*n156*n19*n27*pow(n43, n20)*n67 + pow(alpha, n2*n25)*pow(n129, n20)*n27*n32*pow(n43, n20)*n67/n140 + n132*n156*n19*n42 + n27*n32*n85;
20534  n295 = pow(alpha, n2*n25)*pow(n129, n20)*n158*n2*n27*pow(n43, n20)*n67 - pow(alpha, n2*n25)*pow(n129, n20)*n27*n34*pow(n43, n20)*n67/n142 + n125 + n132*n158*n98;
20535  n296 = pow(alpha, n2*n25)*pow(n129, n20)*n152*n19*n27*pow(n43, n20)*n67 + pow(alpha, n2*n25)*pow(n129, n20)*n27*n36*pow(n43, n20)*n67/n144 + n132*n152*n19*n42 + n27*n36*n87;
20536  n297 = pow(alpha, n2*n25)*pow(n129, n20)*n149*n2*n27*pow(n43, n20)*n67 - pow(alpha, n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n99/n145 + n132*n149*n98 + n54*n99;
20537  n298 = pow(alpha, n2*n25)*pow(n129, n20)*n153*n2*n27*pow(n43, n20)*n67 - pow(alpha, n2*n25)*pow(n129, n20)*n27*n38*pow(n43, n20)*n67/n146 + n124 + n132*n153*n98;
20538  n299 = pow(n165, n20)*n58*n69*xF[12]*(pow(alpha, -n134*n8 + n2*n25)*n104*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n8 + n2*n25)*pow(n129, n20)*n19*n27*pow(n43, n20)*n67*n8 + n104*n84 + n132*n148*n19*n42);
20539  n300 = n101*pow(n167, n20)*n58*(pow(alpha, -n10*n134 + n2*n25)*n10*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n10*n134 + n2*n25)*pow(n129, n20)*n27*n32*pow(n43, n20)*n67 + n132*n156*n19*n42 + n27*n32*n85);
20540  n301 = pow(n171, n20)*n58*n75*xF[6]*(pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n14*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n27*n36*pow(n43, n20)*n67 + n132*n152*n19*n42 + n27*n36*n87);
20541  n302 = n116*pow(n163, n20)*n58*(pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n6*n67 - pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n27*n28*pow(n43, n20)*n67 + n126 + n132*n157*n98);
20542  n303 = n209*n58*(-pow(alpha, -n134*n9 + n2*n25)*n105*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n9 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n9 + n105*n48 + n132*n155*n98);
20543  n304 = pow(n169, n20)*n58*n81*xF[4]*(pow(alpha, -n12*n134 + n2*n25)*n12*pow(n129, n20)*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n12*n134 + n2*n25)*pow(n129, n20)*n27*n34*pow(n43, n20)*n67 + n125 + n132*n158*n98);
20544  n305 = n207*n58*(pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*n13*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n95 + n132*n159*n98 + n52*n95);
20545  n306 = n118*pow(n172, n20)*n58*(pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*n15*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n99 + n132*n149*n98 + n54*n99);
20546  n307 = n117*pow(n173, n20)*n58*(pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n16*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n27*n38*pow(n43, n20)*n67 + n124 + n132*n153*n98);
20547  n308 = n114*pow(n174, n20)*n58*(-pow(alpha, -n134*n17 + n2*n25)*n111*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n17 + n2*n25)*pow(n129, n20)*n17*n2*n27*pow(n43, n20)*n67 + n111*n56 + n132*n150*n98);
20548  n309 = n226 + n286 + n288;
20549  n310 = n100*n188*n3*n58 - n101*pow(n167, n20)*n233*n58 + n103*n200*n58 + n113*n258*n58 + n114*n261*n58 + n115*n197*n58 + n116*n262*n58 + n117*n264*n58 + n118*n263*n58 + n119*n189*n58 + n12*n190*n58*n96 + n121*n58/n165 + n191*n3*n58*n92 + n192*n3*n58*n94 + n193*n3*n58*n93 + n195*n234*n58*n79 + n201*n58*n59 + n202*n58*n60 + n203*n58*n63 + n207*n236*n58 + n209*n232*n58 - n260*n58*n91 + n265*n58*n80 + n268*n58*n81 + n289;
20550  n311 = n310*xTj;
20551  n312 = n213 + n214 + n215 + n216 + n217 + n218 + n219 + n220 + n221 + n222 + n223 + n224 + n225 + n273 + n274 + n275 + n276 + n277 + n278 + n279 + n280 + n281 + n282 + n283 + n284 + n285 + n287 + n299 + n300 + n301 + n302 + n303 + n304 + n305 + n306 + n307 + n308;
20552  n313 = -n101*n233*n58*(n100*n41 + n131*n156*n41*n42)/n180 - n102*n290*n58 - n108*n236*n58*(n13*n41*n52 + n131*n159*n41*n42)/n183 + n113*n231*n58*(n109*n41 + n131*n148*n41*n42)/n178 + n114*n240*n58*(n103*n41 + n131*n150*n41*n42)/n187 + n116*n229*n58*(n106*n41 + n131*n157*n41*n42)/n176 + n117*n239*n58*(n131*n153*n41*n42 + n41*n94)/n186 - pow(n164, n20)*n58*n91*(pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n7 - pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n27*n29*pow(n43, n20)*n67 + n122 + n132*n154*n98) + n195*n58*n72*(pow(alpha, -n11*n134 + n2*n25)*n11*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n11*n134 + n2*n25)*pow(n129, n20)*n27*n33*pow(n43, n20)*n67 + n132*n151*n19*n42 + n27*n50*n61) + n196*n237*n58*n80*(n131*n152*n41*n42 + n41*n93) + n199*n235*n58*n81*(n12*n41*n51 + n131*n158*n41*n42) - n205*n254*n58*(n107*n41 + n131*n155*n41*n42) + n208*n238*n58*(n110*n41 + n131*n149*n41*n42) + n312 + n234*n58*n79*xF[3]*(n131*n151*n41*n42 + n41*n92)/n181 - n230*n58*n91*(n131*n154*n41*n42 + n41*n46*n7)/n177;
20553  n314 = n313*xTj;
20554  NP_b = -n206*n227*n58*n89/n90 - n212 - n25*(-n0*n102*pow(n162, n20)*n58*(-pow(alpha, NP0*n2 - n134*n2)*n131*n97 + n82*n97) + n0*xTj*(n101*pow(n167, n20)*n58*(pow(alpha, NP0*n2 - n10*n134)*n10*n132*n19 + pow(alpha, -n10*n134 + n2*n25)*n10*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n10*n134 + n2*n25)*pow(n129, n20)*n27*n32*pow(n43, n20)*n67 + n27*n32*n85) + n101*n20*n267*n58 + n102*pow(n162, n20)*n58*(-pow(alpha, NP0*n2 - n134*n2)*n131*n97 + n82*n97) + n102*n20*n266*n58 + n108*n20*n269*n58 + n114*pow(n174, n20)*n58*(pow(alpha, NP0*n2 - n134*n17)*n132*n17*n2 - pow(alpha, -n134*n17 + n2*n25)*n111*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n17 + n2*n25)*pow(n129, n20)*n17*n2*n27*pow(n43, n20)*n67 + n111*n56) + n116*pow(n163, n20)*n58*(pow(alpha, NP0*n2 - n134*n6)*n132*n2*n6 + pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n6*n67 - pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n27*n28*pow(n43, n20)*n67 + n126) + n117*pow(n173, n20)*n58*(pow(alpha, NP0*n2 - n134*n16)*n132*n16*n2 + pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n16*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n27*n38*pow(n43, n20)*n67 + n124) + n118*pow(n172, n20)*n58*(pow(alpha, NP0*n2 - n134*n15)*n132*n15*n2 + pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*n15*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n99 + n54*n99) + pow(n164, n20)*n58*n91*(pow(alpha, NP0*n2 - n134*n7)*n132*n19*n7 + pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n19*n27*pow(n43, n20)*n67*n7 + pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n27*n29*pow(n43, n20)*n67 + n27*n29*n83) + pow(n165, n20)*n58*n69*xF[12]*(pow(alpha, NP0*n2 - n134*n8)*n132*n19*n8 + pow(alpha, -n134*n8 + n2*n25)*n104*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n8 + n2*n25)*pow(n129, n20)*n19*n27*pow(n43, n20)*n67*n8 + n104*n84) + pow(n169, n20)*n58*n81*xF[4]*(pow(alpha, NP0*n2 - n12*n134)*n12*n132*n2 + pow(alpha, -n12*n134 + n2*n25)*n12*pow(n129, n20)*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n12*n134 + n2*n25)*pow(n129, n20)*n27*n34*pow(n43, n20)*n67 + n125) + pow(n171, n20)*n58*n75*xF[6]*(pow(alpha, NP0*n2 - n134*n14)*n132*n14*n19 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n14*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n27*n36*pow(n43, n20)*n67 + n27*n36*n87) + n195*n58*n79*(pow(alpha, NP0*n2 - n11*n134)*n11*n132*n2 + pow(alpha, -n11*n134 + n2*n25)*n11*pow(n129, n20)*n2*n27*pow(n43, n20)*n67 + pow(alpha, -n11*n134 + n2*n25)*pow(n129, n20)*n27*pow(n43, n20)*n61*n67 + n128) + n196*n20*n250*n58*n75 + n199*n20*n248*n58*n73 + n20*n205*n256*n58 + n20*n270*n58*n91 + n207*n58*(pow(alpha, NP0*n2 - n13*n134)*n13*n132*n2 + pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*n13*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n95 + n52*n95) + n209*n58*(pow(alpha, NP0*n2 - n134*n9)*n132*n2*n9 - pow(alpha, -n134*n9 + n2*n25)*n105*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n9 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n9 + n105*n48) + n213 + n214 + n215 + n216 + n217 + n218 + n219 + n220 + n221 + n222 + n223 + n224 + n225 + n273 + n274 + n275 + n276 + n277 + n278 + n279 + n280 + n281 + n282 + n283 + n284 + n285 + n20*n253*n58*n78*xF[9]/n187 + n20*n252*n58*n77*xF[8]/n186 + n20*n251*n58*n76*xF[7]/n185 + n20*n247*n58*n72*xF[3]/n181 + n20*n244*n58*n69*xF[12]/n178 + n20*n242*n58*n65*xF[10]/n176) - 1.0*n102*n266*n58 + 1.0*pow(n162, n20)*n58*n89*(pow(alpha, NP0*n2 - n134*n2)*n131/n90 + n42/n90)/n90 + n226) - n58*xTj*(n100*n188*n3 - n101*pow(n167, n20)*n233 - n102*n259 + n103*n200 + n113*n258 + n114*n261 + n115*n197 + n116*n262 + n117*n264 + n118*n263 + n119*n189 + n12*n190*n96 + n121/n165 + n191*n3*n92 + n192*n3*n94 + n193*n3*n93 + n195*n234*n79 + n201*n59 + n202*n60 + n203*n63 + n207*n236 + n209*n232 - n260*n91 + n265*n80 + n268*n81 + n89/(n162*n90));
20555  NP_2a = -n58*(-pow(alpha, n2*n25)*n1*n102*pow(n227, -n1)*n97/n175 + pow(alpha, n2*n25)*n1*pow(n162, n20)*n227*n97*xF[0] + n102*pow(n162, n20)*n82*n97*(-1 + (-n21 + xPj*xTj)/(n129*n135*n43)) + 1.0*xTj*(n1*pow(n162, n20)*n19*n3*n89*(pow(alpha, NP0*n2 + n134*n19)*n131/n90 + n42/n90) + n100*pow(n167, n20)*n41*xF[2]*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n3 + n100*n3) + n101*pow(n167, n20)*(pow(alpha, -n10*n134 + n2*n25)*n10*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n10*n134 + n2*n25)*pow(n129, n20)*n27*n32*pow(n43, n20)*n67 + n132*n156*n19*n42 + n27*n32*n85) + n101*n20*n267 + n102*n20*n266 + n102*n271 + n103*pow(n174, n20)*n41*xF[9]*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n3 + n103*n3) + n104*n204 + n105*n202 + n107*pow(n166, n20)*n41*xF[1]*(pow(alpha, NP0*n2 - n134*n9)*n131*n60 + n48*n60) + n108*n20*n269 + n109*pow(n165, n20)*n41*xF[12]*(pow(alpha, NP0*n2 - n134*n8)*n131*n3*n8 + n109*n3) + n110*pow(n172, n20)*n41*xF[7]*(pow(alpha, NP0*n2 - n134*n15)*n131*n63 + n54*n63) + n115*pow(n163, n20)*n41*(pow(alpha, NP0*n2 - n134*n6)*n131*n3*n6 + n106*n3) + n116*pow(n163, n20)*(pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n6*n67 - pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n27*n28*pow(n43, n20)*n67 + n126 + n132*n157*n98) + n117*pow(n173, n20)*(pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n16*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n27*n38*pow(n43, n20)*n67 + n124 + n132*n153*n98) + n118*pow(n172, n20)*(pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*n15*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n99 + n132*n149*n98 + n54*n99) + n119*pow(n164, n20)*n23*(pow(alpha, NP0*n2 - n134*n7)*n131*n3*n7 + n119) + n12*pow(n169, n20)*n41*n51*xF[4]*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n3 + n12*n96) + n122*n189 + n123*n188 + n124*n192 + n125*n190 + n126*n194 + n127*n193 + n128*n191 + n13*pow(n170, n20)*n41*n52*xF[5]*(pow(alpha, NP0*n2 - n13*n134)*n131*n59 + n52*n59) + pow(n164, n20)*n91*(pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n19*n27*pow(n43, n20)*n67*n7 + pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n27*n29*pow(n43, n20)*n67 + n132*n154*n19*n42 + n27*n29*n83) + pow(n165, n20)*n69*xF[12]*(pow(alpha, -n134*n8 + n2*n25)*n104*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n8 + n2*n25)*pow(n129, n20)*n19*n27*pow(n43, n20)*n67*n8 + n104*n84 + n132*n148*n19*n42) + pow(n169, n20)*n81*xF[4]*(pow(alpha, -n12*n134 + n2*n25)*n12*pow(n129, n20)*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n12*n134 + n2*n25)*pow(n129, n20)*n27*n34*pow(n43, n20)*n67 + n125 + n132*n158*n98) + pow(n171, n20)*n41*n93*xF[6]*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n3 + n3*n93) + pow(n171, n20)*n75*xF[6]*(pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n14*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n27*n36*pow(n43, n20)*n67 + n132*n152*n19*n42 + n27*n36*n87) + pow(n173, n20)*n41*n94*xF[8]*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n3 + n3*n94) + pow(n174, n20)*n78*xF[9]*(pow(alpha, -n134*n17 + n2*n25)*n111*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n17 + n2*n25)*pow(n129, n20)*n17*n19*n27*pow(n43, n20)*n67 + n111*n88 + n132*n150*n19*n42) + n195*n41*n92*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n3 + n3*n92) + n195*n79*(pow(alpha, -n11*n134 + n2*n25)*n11*pow(n129, n20)*n2*n27*pow(n43, n20)*n67 + pow(alpha, -n11*n134 + n2*n25)*pow(n129, n20)*n27*pow(n43, n20)*n61*n67 + n128 + n132*n151*n98) + n196*n20*n250*n75 + n199*n20*n248*n73 + n20*n205*n256 + n20*n270*n91 + n201*n95 + n203*n99 + n207*(pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*n13*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n95 + n132*n159*n98 + n52*n95) + n209*(-pow(alpha, -n134*n9 + n2*n25)*n105*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n9 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n9 + n105*n48 + n132*n155*n98) + n210 + n20*n253*n78*xF[9]/n187 + n20*n252*n77*xF[8]/n186 + n20*n251*n76*xF[7]/n185 + n20*n247*n72*xF[3]/n181 + n20*n244*n69*xF[12]/n178 + n20*n242*n65*xF[10]/n176 + n89*n97/n162) - 1.0*n89*n97/n162);
20556  NP_sqrt_base = (NP0*(n24*(n100*n188*n3*n58 - n101*pow(n167, n20)*n58*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n3 + n100*n3) - n102*pow(n162, n20)*n58*(pow(alpha, NP0*n2 - n134*n2)*n131/n90 + n42/n90) + n103*n200*n58 + n113*pow(n165, n20)*n58*(pow(alpha, NP0*n2 - n134*n8)*n131*n3*n8 + n109*n3) + n114*pow(n174, n20)*n58*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n3 + n103*n3) + n115*n197*n58 + n116*pow(n163, n20)*n58*(pow(alpha, NP0*n2 - n134*n6)*n131*n3*n6 + n106*n3) + n117*pow(n173, n20)*n58*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n3 + n3*n94) + n118*pow(n172, n20)*n58*(pow(alpha, NP0*n2 - n134*n15)*n131*n63 + n54*n63) + n119*n189*n58 + n12*n190*n58*n96 + n121*n58/n165 - pow(n164, n20)*n58*n91*(pow(alpha, NP0*n2 - n134*n7)*n131*n3*n7 + n119) + pow(n169, n20)*n58*n81*xF[4]*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n3 + n12*n96) + pow(n171, n20)*n58*n80*xF[6]*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n3 + n3*n93) + n191*n3*n58*n92 + n192*n3*n58*n94 + n193*n3*n58*n93 + n195*n58*n79*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n3 + n3*n92) + n201*n58*n59 + n202*n58*n60 + n203*n58*n63 + n207*n58*(pow(alpha, NP0*n2 - n13*n134)*n131*n59 + n52*n59) + n209*n58*(pow(alpha, NP0*n2 - n134*n9)*n131*n60 + n48*n60) + n211) + n289) + n102*n58/n162 + xTj*(-n101*n58/n167 + n102*n198*n58 - n108*n58/n170 + n113*n58/n165 + n114*n58/n174 + n116*n58/n163 + n117*n58/n173 + n118*n58/n172 + n190*n58*n81 + n191*n58*n79 + n193*n58*n80 - n58*n70*xF[1]/n166 - n58*n91/n164) + pow(NP0, -n1)*(-n0*n102*n290*n58 + n0*n213 + n0*n24*(n101*pow(n167, n20)*n58*(pow(alpha, NP0*n2 - n10*n134)*n10*n132*n19 + pow(alpha, -n10*n134 + n2*n25)*n10*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n10*n134 + n2*n25)*pow(n129, n20)*n27*n32*pow(n43, n20)*n67 + n27*n32*n85) - n101*n58*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n3 + n100*n3)*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n41 + n100*n41)/n180 + n102*pow(n162, n20)*n58*(pow(alpha, NP0*n2 - n134*n2)*n97*(-n21 + xPj*xTj)/(n129*n43) + n82*n97) - n102*n58*(pow(alpha, NP0*n2 - n134*n2)*n131/n90 + n42/n90)*(pow(alpha, NP0*n2 - n134*n2)*n1*n131*n19*n3 + n1*n19*n3*n42)/n175 - n108*n58*(pow(alpha, NP0*n2 - n13*n134)*n131*n59 + n52*n59)*(pow(alpha, NP0*n2 - n13*n134)*n13*n131*n41 + n13*n41*n52)/n183 + n113*n58*(pow(alpha, NP0*n2 - n134*n8)*n131*n3*n8 + n109*n3)*(pow(alpha, NP0*n2 - n134*n8)*n131*n41*n8 + n109*n41)/n178 + n114*pow(n174, n20)*n58*(pow(alpha, NP0*n2 - n134*n17)*n132*n17*n2 - pow(alpha, -n134*n17 + n2*n25)*n111*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n17 + n2*n25)*pow(n129, n20)*n17*n2*n27*pow(n43, n20)*n67 + n111*n56) + n114*n58*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n3 + n103*n3)*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n41 + n103*n41)/n187 + n116*pow(n163, n20)*n58*(pow(alpha, NP0*n2 - n134*n6)*n132*n2*n6 + pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n6*n67 - pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n27*n28*pow(n43, n20)*n67 + n126) + n116*n58*(pow(alpha, NP0*n2 - n134*n6)*n131*n3*n6 + n106*n3)*(pow(alpha, NP0*n2 - n134*n6)*n131*n41*n6 + n106*n41)/n176 + n117*pow(n173, n20)*n58*(pow(alpha, NP0*n2 - n134*n16)*n132*n16*n2 + pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n16*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n27*n38*pow(n43, n20)*n67 + n124) + n117*n58*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n3 + n3*n94)*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n41 + n41*n94)/n186 + n118*pow(n172, n20)*n58*(pow(alpha, NP0*n2 - n134*n15)*n132*n15*n2 + pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*n15*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n99 + n54*n99) - pow(n164, n20)*n58*n91*(pow(alpha, NP0*n2 - n134*n7)*n132*n2*n7 + pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n7 - pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n27*n29*pow(n43, n20)*n67 + n122) + pow(n165, n20)*n58*n69*xF[12]*(pow(alpha, NP0*n2 - n134*n8)*n132*n19*n8 + pow(alpha, -n134*n8 + n2*n25)*n104*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n8 + n2*n25)*pow(n129, n20)*n19*n27*pow(n43, n20)*n67*n8 + n104*n84) + pow(n169, n20)*n58*n81*xF[4]*(pow(alpha, NP0*n2 - n12*n134)*n12*n132*n2 + pow(alpha, -n12*n134 + n2*n25)*n12*pow(n129, n20)*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n12*n134 + n2*n25)*pow(n129, n20)*n27*n34*pow(n43, n20)*n67 + n125) + pow(n171, n20)*n58*n75*xF[6]*(pow(alpha, NP0*n2 - n134*n14)*n132*n14*n19 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n14*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n27*n36*pow(n43, n20)*n67 + n27*n36*n87) + n195*n58*n72*(pow(alpha, NP0*n2 - n11*n134)*n11*n132*n19 + pow(alpha, -n11*n134 + n2*n25)*n11*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n11*n134 + n2*n25)*pow(n129, n20)*n27*n33*pow(n43, n20)*n67 + n27*n50*n61) + n196*n58*n80*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n3 + n3*n93)*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n41 + n41*n93) + n199*n58*n81*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n3 + n12*n96)*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n41 + n12*n41*n51) - n205*n58*xF[1]*(pow(alpha, NP0*n2 - n134*n9)*n131*n60 + n48*n60)*(pow(alpha, NP0*n2 - n134*n9)*n131*n41*n9 + n107*n41) + n207*n58*(pow(alpha, NP0*n2 - n13*n134)*n13*n132*n2 + pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*n13*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n95 + n52*n95) + n208*n58*(pow(alpha, NP0*n2 - n134*n15)*n131*n63 + n54*n63)*(pow(alpha, NP0*n2 - n134*n15)*n131*n15*n41 + n110*n41) + n209*n58*(pow(alpha, NP0*n2 - n134*n9)*n132*n2*n9 - pow(alpha, -n134*n9 + n2*n25)*n105*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n9 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n9 + n105*n48) + n213 + n214 + n215 + n216 + n217 + n218 + n219 + n220 + n221 + n222 + n223 + n224 + n225 + n273 + n274 + n275 + n276 + n277 + n278 + n279 + n280 + n281 + n282 + n283 + n284 + n285 + n58*n79*xF[3]*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n3 + n3*n92)*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n41 + n41*n92)/n181 - n58*n91*(pow(alpha, NP0*n2 - n134*n7)*n131*n3*n7 + n119)*(pow(alpha, NP0*n2 - n134*n7)*n131*n41*n7 + n41*n46*n7)/n177) + n0*n287 - 1.0*n259*n58*n89/n90))*(-n1*n213 - n1*n24*(n101*pow(n167, n20)*n58*(pow(alpha, NP0*n2 - n10*n134)*n10*n132*n19 + pow(alpha, -n10*n134 + n2*n25)*n10*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n10*n134 + n2*n25)*pow(n129, n20)*n27*n32*pow(n43, n20)*n67 + n27*n32*n85) - n101*n58*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n3 + n100*n3)*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n41 + n100*n41)/n180 + n102*pow(n162, n20)*n58*(pow(alpha, NP0*n2 - n134*n2)*n97*(-n21 + xPj*xTj)/(n129*n43) + n82*n97) - n102*n58*(pow(alpha, NP0*n2 - n134*n2)*n131/n90 + n42/n90)*(pow(alpha, NP0*n2 - n134*n2)*n1*n131*n19*n3 + n1*n19*n3*n42)/n175 - n108*n58*(pow(alpha, NP0*n2 - n13*n134)*n131*n59 + n52*n59)*(pow(alpha, NP0*n2 - n13*n134)*n13*n131*n41 + n13*n41*n52)/n183 + n113*n58*(pow(alpha, NP0*n2 - n134*n8)*n131*n3*n8 + n109*n3)*(pow(alpha, NP0*n2 - n134*n8)*n131*n41*n8 + n109*n41)/n178 + n114*pow(n174, n20)*n58*(pow(alpha, NP0*n2 - n134*n17)*n132*n17*n2 - pow(alpha, -n134*n17 + n2*n25)*n111*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n17 + n2*n25)*pow(n129, n20)*n17*n2*n27*pow(n43, n20)*n67 + n111*n56) + n114*n58*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n3 + n103*n3)*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n41 + n103*n41)/n187 + n116*pow(n163, n20)*n58*(pow(alpha, NP0*n2 - n134*n6)*n132*n2*n6 + pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n6*n67 - pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n27*n28*pow(n43, n20)*n67 + n126) + n116*n58*(pow(alpha, NP0*n2 - n134*n6)*n131*n3*n6 + n106*n3)*(pow(alpha, NP0*n2 - n134*n6)*n131*n41*n6 + n106*n41)/n176 + n117*pow(n173, n20)*n58*(pow(alpha, NP0*n2 - n134*n16)*n132*n16*n2 + pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n16*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n27*n38*pow(n43, n20)*n67 + n124) + n117*n58*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n3 + n3*n94)*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n41 + n41*n94)/n186 + n118*pow(n172, n20)*n58*(pow(alpha, NP0*n2 - n134*n15)*n132*n15*n2 + pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*n15*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n99 + n54*n99) - pow(n164, n20)*n58*n91*(pow(alpha, NP0*n2 - n134*n7)*n132*n2*n7 + pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n7 - pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n27*n29*pow(n43, n20)*n67 + n122) + pow(n165, n20)*n58*n69*xF[12]*(pow(alpha, NP0*n2 - n134*n8)*n132*n19*n8 + pow(alpha, -n134*n8 + n2*n25)*n104*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n8 + n2*n25)*pow(n129, n20)*n19*n27*pow(n43, n20)*n67*n8 + n104*n84) + pow(n169, n20)*n58*n81*xF[4]*(pow(alpha, NP0*n2 - n12*n134)*n12*n132*n2 + pow(alpha, -n12*n134 + n2*n25)*n12*pow(n129, n20)*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n12*n134 + n2*n25)*pow(n129, n20)*n27*n34*pow(n43, n20)*n67 + n125) + pow(n171, n20)*n58*n75*xF[6]*(pow(alpha, NP0*n2 - n134*n14)*n132*n14*n19 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n14*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n27*n36*pow(n43, n20)*n67 + n27*n36*n87) + n195*n58*n72*(pow(alpha, NP0*n2 - n11*n134)*n11*n132*n19 + pow(alpha, -n11*n134 + n2*n25)*n11*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n11*n134 + n2*n25)*pow(n129, n20)*n27*n33*pow(n43, n20)*n67 + n27*n50*n61) + n196*n58*n80*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n3 + n3*n93)*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n41 + n41*n93) + n199*n58*n81*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n3 + n12*n96)*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n41 + n12*n41*n51) - n205*n58*xF[1]*(pow(alpha, NP0*n2 - n134*n9)*n131*n60 + n48*n60)*(pow(alpha, NP0*n2 - n134*n9)*n131*n41*n9 + n107*n41) + n207*n58*(pow(alpha, NP0*n2 - n13*n134)*n13*n132*n2 + pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*n13*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n95 + n52*n95) + n208*n58*(pow(alpha, NP0*n2 - n134*n15)*n131*n63 + n54*n63)*(pow(alpha, NP0*n2 - n134*n15)*n131*n15*n41 + n110*n41) + n209*n58*(pow(alpha, NP0*n2 - n134*n9)*n132*n2*n9 - pow(alpha, -n134*n9 + n2*n25)*n105*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n9 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n9 + n105*n48) + n213 + n214 + n215 + n216 + n217 + n218 + n219 + n220 + n221 + n222 + n223 + n224 + n225 + n273 + n274 + n275 + n276 + n277 + n278 + n279 + n280 + n281 + n282 + n283 + n284 + n285 + n58*n79*xF[3]*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n3 + n3*n92)*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n41 + n41*n92)/n181 - n58*n91*(pow(alpha, NP0*n2 - n134*n7)*n131*n3*n7 + n119)*(pow(alpha, NP0*n2 - n134*n7)*n131*n41*n7 + n41*n46*n7)/n177) - n1*n287 - 4.0*n102*n266*n58 + 4.0*n259*n58*n89/n90) + pow(-n102*n259*n58 - n212 - n25*(-n0*n102*pow(n162, n20)*n58*(-pow(alpha, NP0*n2 - n134*n2)*n131*n97 + n82*n97) + n0*n102*n58*(pow(alpha, NP0*n2 - n134*n2)*n131/n90 + n42/n90)*(pow(alpha, NP0*n2 - n134*n2)*n1*n131*n19*n3 + n1*n19*n3*n42)/n175 + n0*xTj*(n101*pow(n167, n20)*n58*(pow(alpha, NP0*n2 - n10*n134)*n10*n132*n19 + pow(alpha, -n10*n134 + n2*n25)*n10*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n10*n134 + n2*n25)*pow(n129, n20)*n27*n32*pow(n43, n20)*n67 + n27*n32*n85) - n101*n58*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n3 + n100*n3)*(pow(alpha, NP0*n2 - n10*n134)*n10*n131*n41 + n100*n41)/n180 + n102*pow(n162, n20)*n58*(-pow(alpha, NP0*n2 - n134*n2)*n131*n97 + n82*n97) - n102*n58*(pow(alpha, NP0*n2 - n134*n2)*n131/n90 + n42/n90)*(pow(alpha, NP0*n2 - n134*n2)*n1*n131*n19*n3 + n1*n19*n3*n42)/n175 - n108*n58*(pow(alpha, NP0*n2 - n13*n134)*n131*n59 + n52*n59)*(pow(alpha, NP0*n2 - n13*n134)*n13*n131*n41 + n13*n41*n52)/n183 + n113*n58*(pow(alpha, NP0*n2 - n134*n8)*n131*n3*n8 + n109*n3)*(pow(alpha, NP0*n2 - n134*n8)*n131*n41*n8 + n109*n41)/n178 + n114*pow(n174, n20)*n58*(pow(alpha, NP0*n2 - n134*n17)*n132*n17*n2 - pow(alpha, -n134*n17 + n2*n25)*n111*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n17 + n2*n25)*pow(n129, n20)*n17*n2*n27*pow(n43, n20)*n67 + n111*n56) + n114*n58*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n3 + n103*n3)*(pow(alpha, NP0*n2 - n134*n17)*n131*n17*n41 + n103*n41)/n187 + n116*pow(n163, n20)*n58*(pow(alpha, NP0*n2 - n134*n6)*n132*n2*n6 + pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n6*n67 - pow(alpha, -n134*n6 + n2*n25)*pow(n129, n20)*n27*n28*pow(n43, n20)*n67 + n126) + n116*n58*(pow(alpha, NP0*n2 - n134*n6)*n131*n3*n6 + n106*n3)*(pow(alpha, NP0*n2 - n134*n6)*n131*n41*n6 + n106*n41)/n176 + n117*pow(n173, n20)*n58*(pow(alpha, NP0*n2 - n134*n16)*n132*n16*n2 + pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n16*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n16 + n2*n25)*pow(n129, n20)*n27*n38*pow(n43, n20)*n67 + n124) + n117*n58*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n3 + n3*n94)*(pow(alpha, NP0*n2 - n134*n16)*n131*n16*n41 + n41*n94)/n186 + n118*pow(n172, n20)*n58*(pow(alpha, NP0*n2 - n134*n15)*n132*n15*n2 + pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*n15*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n134*n15 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n99 + n54*n99) - pow(n164, n20)*n58*n91*(pow(alpha, NP0*n2 - n134*n7)*n132*n2*n7 + pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n7 - pow(alpha, -n134*n7 + n2*n25)*pow(n129, n20)*n27*n29*pow(n43, n20)*n67 + n122) + pow(n165, n20)*n58*n69*xF[12]*(pow(alpha, NP0*n2 - n134*n8)*n132*n19*n8 + pow(alpha, -n134*n8 + n2*n25)*n104*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n8 + n2*n25)*pow(n129, n20)*n19*n27*pow(n43, n20)*n67*n8 + n104*n84) + pow(n169, n20)*n58*n81*xF[4]*(pow(alpha, NP0*n2 - n12*n134)*n12*n132*n2 + pow(alpha, -n12*n134 + n2*n25)*n12*pow(n129, n20)*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n12*n134 + n2*n25)*pow(n129, n20)*n27*n34*pow(n43, n20)*n67 + n125) + pow(n171, n20)*n58*n75*xF[6]*(pow(alpha, NP0*n2 - n134*n14)*n132*n14*n19 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n14*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n134*n14 + n2*n25)*pow(n129, n20)*n27*n36*pow(n43, n20)*n67 + n27*n36*n87) + n195*n58*n72*(pow(alpha, NP0*n2 - n11*n134)*n11*n132*n19 + pow(alpha, -n11*n134 + n2*n25)*n11*pow(n129, n20)*n19*n27*pow(n43, n20)*n67 + pow(alpha, -n11*n134 + n2*n25)*pow(n129, n20)*n27*n33*pow(n43, n20)*n67 + n27*n50*n61) + n196*n58*n80*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n3 + n3*n93)*(pow(alpha, NP0*n2 - n134*n14)*n131*n14*n41 + n41*n93) + n199*n58*n81*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n3 + n12*n96)*(pow(alpha, NP0*n2 - n12*n134)*n12*n131*n41 + n12*n41*n51) - n205*n58*xF[1]*(pow(alpha, NP0*n2 - n134*n9)*n131*n60 + n48*n60)*(pow(alpha, NP0*n2 - n134*n9)*n131*n41*n9 + n107*n41) + n207*n58*(pow(alpha, NP0*n2 - n13*n134)*n13*n132*n2 + pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*n13*n2*n27*pow(n43, n20)*n67 - pow(alpha, -n13*n134 + n2*n25)*pow(n129, n20)*pow(n43, n20)*n67*n95 + n52*n95) + n208*n58*(pow(alpha, NP0*n2 - n134*n15)*n131*n63 + n54*n63)*(pow(alpha, NP0*n2 - n134*n15)*n131*n15*n41 + n110*n41) + n209*n58*(pow(alpha, NP0*n2 - n134*n9)*n132*n2*n9 - pow(alpha, -n134*n9 + n2*n25)*n105*pow(n129, n20)*pow(n43, n20)*n67 + pow(alpha, -n134*n9 + n2*n25)*pow(n129, n20)*n2*n27*pow(n43, n20)*n67*n9 + n105*n48) + n213 + n214 + n215 + n216 + n217 + n218 + n219 + n220 + n221 + n222 + n223 + n224 + n225 + n273 + n274 + n275 + n276 + n277 + n278 + n279 + n280 + n281 + n282 + n283 + n284 + n285 + n58*n79*xF[3]*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n3 + n3*n92)*(pow(alpha, NP0*n2 - n11*n134)*n11*n131*n41 + n41*n92)/n181 - n58*n91*(pow(alpha, NP0*n2 - n134*n7)*n131*n3*n7 + n119)*(pow(alpha, NP0*n2 - n134*n7)*n131*n41*n7 + n41*n46*n7)/n177) + 1.0*pow(n162, n20)*n58*n89*(pow(alpha, NP0*n2 - n134*n2)*n131/n90 + n42/n90)/n90 + n226) - n311, -n1);
20557  NP_sqrt_base = fabs(NP_sqrt_base);
20558  NP1 = (-NP_b - pow(NP_sqrt_base, -n0))/NP_2a;
20559  NT1 = n90*(n130 - log(-pow(alpha, NP1*n2)*n120 + 1));
20560  g0 = MW[1] - Mstar;
20561  g1 = MW[0] - Mstar;
20562  g2 = NT1 + 1;
20563  g3 = xPj - xTj;
20564  g4 = MW[10] - Mstar;
20565  g5 = MW[11] - Mstar;
20566  g6 = MW[12] - Mstar;
20567  g7 = MW[2] - Mstar;
20568  g8 = MW[3] - Mstar;
20569  g9 = MW[4] - Mstar;
20570  g10 = MW[5] - Mstar;
20571  g11 = MW[6] - Mstar;
20572  g12 = MW[7] - Mstar;
20573  g13 = MW[8] - Mstar;
20574  g14 = MW[9] - Mstar;
20575  g15 = xF[0] - xTj;
20576  g16 = xF[0] - xPj;
20577  g17 = -xTj;
20578  g18 = xPj/xF[1];
20579  g19 = pow(alpha, -g1);
20580  g20 = pow(alpha, -g4);
20581  g21 = pow(alpha, -g5);
20582  g22 = pow(alpha, -g6);
20583  g23 = pow(alpha, -g0);
20584  g24 = pow(alpha, -g7);
20585  g25 = pow(alpha, -g8);
20586  g26 = pow(alpha, -g9);
20587  g27 = pow(alpha, -g10);
20588  g28 = pow(alpha, -g11);
20589  g29 = pow(alpha, -g12);
20590  g30 = pow(alpha, -g13);
20591  g31 = pow(alpha, -g14);
20592  g32 = log(xF[0]/xF[1]);
20593  g33 = -g2;
20594  g34 = pow(alpha, NP1*g0);
20595  g35 = pow(alpha, NP1*g1);
20596  g36 = pow(alpha, NP1*g4);
20597  g37 = log(g19);
20598  g38 = pow(alpha, NP1*g5);
20599  g39 = pow(alpha, NP1*g6);
20600  g40 = pow(alpha, NP1*g7);
20601  g41 = pow(alpha, NP1*g8);
20602  g42 = pow(alpha, NP1*g9);
20603  g43 = pow(alpha, NP1*g10);
20604  g44 = pow(alpha, NP1*g11);
20605  g45 = pow(alpha, NP1*g12);
20606  g46 = pow(alpha, NP1*g13);
20607  g47 = pow(alpha, NP1*g14);
20608  g48 = -g32;
20609  g49 = g15/g3;
20610  g50 = g3/g15;
20611  g51 = -g34 + 1;
20612  g52 = -g34 + 1;
20613  g53 = -g35 + 1;
20614  g54 = -g40 + 1;
20615  g55 = -g41 + 1;
20616  g56 = -g42 + 1;
20617  g57 = -g43 + 1;
20618  g58 = -g44 + 1;
20619  g59 = -g45 + 1;
20620  g60 = -g46 + 1;
20621  g61 = -g47 + 1;
20622  g62 = -g36 + 1;
20623  g63 = -g38 + 1;
20624  g64 = -g39 + 1;
20625  g65 = -g35;
20626  g66 = -g36;
20627  g67 = -g38;
20628  g68 = -g39;
20629  g69 = -g40;
20630  g70 = -g41;
20631  g71 = -g42;
20632  g72 = -g43;
20633  g73 = -g44;
20634  g74 = -g45;
20635  g75 = -g46;
20636  g76 = -g47;
20637  g77 = -1.0*g32;
20638  g78 = -g3/g16;
20639  g79 = g16/(g3*xF[1]);
20640  g80 = pow(alpha, g0*g33) - 1;
20641  g81 = pow(alpha, g0*g33) - 1;
20642  g82 = pow(alpha, g1*g33) - 1;
20643  g83 = pow(alpha, g33*g7) - 1;
20644  g84 = pow(alpha, g33*g8) - 1;
20645  g85 = pow(alpha, g33*g9) - 1;
20646  g86 = pow(alpha, g10*g33) - 1;
20647  g87 = pow(alpha, g11*g33) - 1;
20648  g88 = pow(alpha, g12*g33) - 1;
20649  g89 = pow(alpha, g13*g33) - 1;
20650  g90 = pow(alpha, g14*g33) - 1;
20651  g91 = pow(alpha, g33*g4) - 1;
20652  g92 = pow(alpha, g33*g5) - 1;
20653  g93 = pow(alpha, g33*g6) - 1;
20654  g94 = -pow(alpha, g1*g33);
20655  g95 = -pow(alpha, g33*g4);
20656  g96 = -pow(alpha, g33*g5);
20657  g97 = -pow(alpha, g33*g6);
20658  g98 = -pow(alpha, g33*g7);
20659  g99 = -pow(alpha, g33*g8);
20660  g100 = -pow(alpha, g33*g9);
20661  g101 = -pow(alpha, g10*g33);
20662  g102 = -pow(alpha, g11*g33);
20663  g103 = -pow(alpha, g12*g33);
20664  g104 = -pow(alpha, g13*g33);
20665  g105 = -pow(alpha, g14*g33);
20666  g106 = g52 + g81;
20667  g107 = -g35 - g94;
20668  g108 = -g36 - g95;
20669  g109 = -g38 - g96;
20670  g110 = -g39 - g97;
20671  g111 = -g40 - g98;
20672  g112 = -g41 - g99;
20673  g113 = -g100 - g42;
20674  g114 = -g101 - g43;
20675  g115 = -g102 - g44;
20676  g116 = -g103 - g45;
20677  g117 = -g104 - g46;
20678  g118 = -g105 - g47;
20679  g119 = pow(alpha, g1*g33) + g65;
20680  g120 = g52 + g81;
20681  g121 = pow(alpha, g33*g4) + g66;
20682  g122 = pow(alpha, g33*g5) + g67;
20683  g123 = pow(alpha, g33*g6) + g68;
20684  g124 = pow(alpha, g33*g7) + g69;
20685  g125 = pow(alpha, g33*g8) + g70;
20686  g126 = pow(alpha, g33*g9) + g71;
20687  g127 = pow(alpha, g10*g33) + g72;
20688  g128 = pow(alpha, g11*g33) + g73;
20689  g129 = pow(alpha, g12*g33) + g74;
20690  g130 = pow(alpha, g13*g33) + g75;
20691  g131 = pow(alpha, g14*g33) + g76;
20692  g132 = xF[11]/g122;
20693  g133 = xF[9]/g131;
20694  g134 = xF[8]/g130;
20695  g135 = xF[1]/g120;
20696  g136 = xF[10]/g121;
20697  g137 = xF[3]/g125;
20698  g138 = xF[7]/g129;
20699  g139 = xF[4]/g126;
20700  g140 = xF[12]/g123;
20701  g141 = xF[6]/g128;
20702  g142 = xF[5]/g127;
20703  g143 = xF[2]/g124;
20704  g144 = xF[0]/g119;
20705  g145 = xF[1]/g106;
20706  g146 = xF[0]/g107;
20707  g147 = xF[4]/g113;
20708  g148 = xF[7]/g116;
20709  g149 = xF[2]/g111;
20710  g150 = xF[11]/g109;
20711  g151 = xF[3]/g112;
20712  g152 = xF[6]/g115;
20713  g153 = xF[8]/g117;
20714  g154 = xF[12]/g110;
20715  g155 = xF[10]/g108;
20716  g156 = xF[9]/g118;
20717  g157 = xF[5]/g114;
20718  g158 = g58/g115;
20719  g159 = g61/g118;
20720  g160 = g56/g113;
20721  g161 = g59/g116;
20722  g162 = g53/g107;
20723  g163 = g57/g114;
20724  g164 = g64/g110;
20725  g165 = g55/g112;
20726  g166 = g51/g106;
20727  g167 = g63/g109;
20728  g168 = g54/g111;
20729  g169 = g62/g108;
20730  g170 = g60/g117;
20731  g171 = g80/g106;
20732  g172 = g82/g107;
20733  g173 = g92/g109;
20734  g174 = g83/g111;
20735  g175 = g84/g112;
20736  g176 = g85/g113;
20737  g177 = g89/g117;
20738  g178 = g90/g118;
20739  g179 = g87/g115;
20740  g180 = g93/g110;
20741  g181 = g88/g116;
20742  g182 = g91/g108;
20743  g183 = g86/g114;
20744  g184 = log(g120*g17*g79/g52);
20745  g185 = log(g106*g17*g79/g51);
20746  g186 = log(g120*g18*g49/g81);
20747  g187 = 1.0*g184;
20748  g188 = log(g106*g18*g49/g80);
20749  g189 = 1.0*g186;
20750  g190 = -g132*g187*(g67 + 1) - g132*g189*(pow(alpha, g33*g5) - 1) - g133*g187*(g76 + 1) - g133*g189*(pow(alpha, g14*g33) - 1) - g134*g187*(g75 + 1) - g134*g189*(pow(alpha, g13*g33) - 1) - g135*g187*g52 - g135*g189*g81 - g136*g187*(g66 + 1) - g136*g189*(pow(alpha, g33*g4) - 1) - g137*g187*(g70 + 1) - g137*g189*(pow(alpha, g33*g8) - 1) - g138*g187*(g74 + 1) - g138*g189*(pow(alpha, g12*g33) - 1) - g139*g187*(g71 + 1) - g139*g189*(pow(alpha, g33*g9) - 1) - g140*g187*(g68 + 1) - g140*g189*(pow(alpha, g33*g6) - 1) - g141*g187*(g73 + 1) - g141*g189*(pow(alpha, g11*g33) - 1) - g142*g187*(g72 + 1) - g142*g189*(pow(alpha, g10*g33) - 1) - g143*g187*(g69 + 1) - g143*g189*(pow(alpha, g33*g7) - 1) - g144*g187*(g65 + 1) - g144*g189*(pow(alpha, g1*g33) - 1) - g77*xF[0] - g77*xF[10] - g77*xF[11] - g77*xF[12] - g77*xF[1] - g77*xF[2] - g77*xF[3] - g77*xF[4] - g77*xF[5] - g77*xF[6] - g77*xF[7] - g77*xF[8] - g77*xF[9];
20751  LpF = xF[0]*(g19 + 1.0)*(g162*g185 + g172*g188 + g48)/(g37*(g19 - 1.0)) + xF[10]*(g20 + 1.0)*(g169*g185 + g182*g188 + g48)/(g37*(g20 - 1.0)) + xF[11]*(g21 + 1.0)*(g167*g185 + g173*g188 + g48)/(g37*(g21 - 1.0)) + xF[12]*(g22 + 1.0)*(g164*g185 + g180*g188 + g48)/(g37*(g22 - 1.0)) + xF[1]*(g23 + 1.0)*(g166*g185 + g171*g188 + g48)/(g37*(g23 - 1.0)) + xF[2]*(g24 + 1.0)*(g168*g185 + g174*g188 + g48)/(g37*(g24 - 1.0)) + xF[3]*(g25 + 1.0)*(g165*g185 + g175*g188 + g48)/(g37*(g25 - 1.0)) + xF[4]*(g26 + 1.0)*(g160*g185 + g176*g188 + g48)/(g37*(g26 - 1.0)) + xF[5]*(g27 + 1.0)*(g163*g185 + g183*g188 + g48)/(g37*(g27 - 1.0)) + xF[6]*(g28 + 1.0)*(g158*g185 + g179*g188 + g48)/(g37*(g28 - 1.0)) + xF[7]*(g29 + 1.0)*(g161*g185 + g181*g188 + g48)/(g37*(g29 - 1.0)) + xF[8]*(g30 + 1.0)*(g170*g185 + g177*g188 + g48)/(g37*(g30 - 1.0)) + xF[9]*(g31 + 1.0)*(g159*g185 + g178*g188 + g48)/(g37*(g31 - 1.0));
20752  PpF = g49;
20753  TpF = -g16/g3;
20754  SWUpF = g190;
20755  SWUpP = g190*g50;
20756  xP[0] = g146*g50*g82;
20757  xP[1] = g145*g50*g80;
20758  xP[2] = g149*g50*g83;
20759  xP[3] = g151*g50*g84;
20760  xP[4] = g147*g50*g85;
20761  xP[5] = g157*g50*g86;
20762  xP[6] = g152*g50*g87;
20763  xP[7] = g148*g50*g88;
20764  xP[8] = g153*g50*g89;
20765  xP[9] = g156*g50*g90;
20766  xP[10] = g155*g50*g91;
20767  xP[11] = g150*g50*g92;
20768  xP[12] = g154*g50*g93;
20769  xT[0] = g146*g53*g78;
20770  xT[1] = g145*g51*g78;
20771  xT[2] = g149*g54*g78;
20772  xT[3] = g151*g55*g78;
20773  xT[4] = g147*g56*g78;
20774  xT[5] = g157*g57*g78;
20775  xT[6] = g152*g58*g78;
20776  xT[7] = g148*g59*g78;
20777  xT[8] = g153*g60*g78;
20778  xT[9] = g156*g61*g78;
20779  xT[10] = g155*g62*g78;
20780  xT[11] = g150*g63*g78;
20781  xT[12] = g154*g64*g78;
20782  break;
20783  case 14:
20784  n0 = -0.500000000000000;
20785  n1 = MW[0] - Mstar;
20786  n2 = log(alpha);
20787  n3 = xPj - xTj;
20788  n4 = xF[0] - xPj;
20789  n5 = MW[10] - Mstar;
20790  n6 = MW[11] - Mstar;
20791  n7 = MW[12] - Mstar;
20792  n8 = MW[13] - Mstar;
20793  n9 = MW[1] - Mstar;
20794  n10 = MW[2] - Mstar;
20795  n11 = MW[3] - Mstar;
20796  n12 = MW[4] - Mstar;
20797  n13 = MW[5] - Mstar;
20798  n14 = MW[6] - Mstar;
20799  n15 = MW[7] - Mstar;
20800  n16 = MW[8] - Mstar;
20801  n17 = MW[9] - Mstar;
20802  n18 = log(xTj);
20803  n19 = -n1;
20804  n20 = -2;
20805  n21 = xF[0]*xPj;
20806  n22 = -Mstar;
20807  n23 = -xTj;
20808  n24 = -NP0*n20;
20809  n25 = -xPj;
20810  n26 = -n20*xF[12];
20811  n27 = pow(n1, -n20);
20812  n28 = pow(n2, -n20);
20813  n29 = pow(n5, -n20);
20814  n30 = pow(n6, -n20);
20815  n31 = pow(n7, -n20);
20816  n32 = pow(n8, -n20);
20817  n33 = pow(n9, -n20);
20818  n34 = pow(n10, -n20);
20819  n35 = pow(n11, -n20);
20820  n36 = pow(n12, -n20);
20821  n37 = pow(n13, -n20);
20822  n38 = pow(n14, -n20);
20823  n39 = pow(n15, -n20);
20824  n40 = pow(n16, -n20);
20825  n41 = pow(n17, -n20);
20826  n42 = Mstar*n2;
20827  n43 = -n2*n20;
20828  n44 = pow(alpha, NP0*n1);
20829  n45 = n21 + n23*xF[0];
20830  n46 = n21 + n23*xPj;
20831  n47 = pow(alpha, NP0*n5);
20832  n48 = pow(alpha, NP0*n6);
20833  n49 = pow(alpha, NP0*n7);
20834  n50 = pow(alpha, NP0*n8);
20835  n51 = pow(alpha, NP0*n9);
20836  n52 = pow(alpha, NP0*n10);
20837  n53 = pow(alpha, NP0*n11);
20838  n54 = pow(alpha, NP0*n12);
20839  n55 = pow(alpha, NP0*n13);
20840  n56 = pow(alpha, NP0*n14);
20841  n57 = pow(alpha, NP0*n15);
20842  n58 = pow(alpha, NP0*n16);
20843  n59 = pow(alpha, NP0*n17);
20844  n60 = -MW[0]*n2;
20845  n61 = n3/n4;
20846  n62 = n13*n2;
20847  n63 = n2*n9;
20848  n64 = n0*n1*n19;
20849  n65 = n10*n2;
20850  n66 = n1*n19;
20851  n67 = -n35;
20852  n68 = n15*n2;
20853  n69 = -n44 + 1;
20854  n70 = -n47 + 1;
20855  n71 = pow(alpha, n1*n24);
20856  n72 = pow(n45, -n20);
20857  n73 = pow(n46, -n20);
20858  n74 = -n48 + 1;
20859  n75 = -n49 + 1;
20860  n76 = -n50 + 1;
20861  n77 = -n51 + 1;
20862  n78 = -n52 + 1;
20863  n79 = -n53 + 1;
20864  n80 = -n54 + 1;
20865  n81 = -n55 + 1;
20866  n82 = -n56 + 1;
20867  n83 = -n57 + 1;
20868  n84 = -n58 + 1;
20869  n85 = -n59 + 1;
20870  n86 = -n79;
20871  n87 = -n82;
20872  n88 = -n70;
20873  n89 = -n74;
20874  n90 = -n44;
20875  n91 = -n49;
20876  n92 = -n50;
20877  n93 = -n52;
20878  n94 = -n54;
20879  n95 = -n55;
20880  n96 = -n56;
20881  n97 = 1/(n1*n2);
20882  n98 = n14*n56;
20883  n99 = n11*n53;
20884  n100 = n1*n44;
20885  n101 = n16*n58;
20886  n102 = n28*n37;
20887  n103 = n12*n54;
20888  n104 = n47*n5;
20889  n105 = n82*xF[6];
20890  n106 = n28*n39;
20891  n107 = n50*n8;
20892  n108 = n78*xF[2];
20893  n109 = n17*n59;
20894  n110 = n28*n34;
20895  n111 = n28*n31;
20896  n112 = n81*xF[5];
20897  n113 = n28*n33;
20898  n114 = n51*n9;
20899  n115 = n15*n57;
20900  n116 = log((-1.0 + xPj/xF[0])/n3);
20901  n117 = -n75*xF[12];
20902  n118 = n28*n44;
20903  n119 = -n85*xF[9];
20904  n120 = -n76*xF[13];
20905  n121 = n2*n48*n6;
20906  n122 = n2*n49*n7;
20907  n123 = n46/n45;
20908  n124 = n28*n71*xF[0];
20909  n125 = n28*n32*n50;
20910  n126 = n28*n40*n58;
20911  n127 = n28*n30*n48;
20912  n128 = n28*n29*n47;
20913  n129 = n28*n35*n53;
20914  n130 = n123*n90 + 1;
20915  n131 = pow(n130, -n20);
20916  n132 = n116 + n18 + n42 + n60;
20917  n133 = n123/n130;
20918  n134 = n133*n2*n44;
20919  n135 = n28*n71*n73/(n131*n72);
20920  n136 = n97*(n132 - log(n130)) + 1;
20921  n137 = pow(alpha, n1*n136);
20922  n138 = pow(alpha, n136*n5);
20923  n139 = pow(alpha, n136*n6);
20924  n140 = pow(alpha, n136*n7);
20925  n141 = pow(alpha, n136*n8);
20926  n142 = pow(alpha, n136*n9);
20927  n143 = pow(alpha, n10*n136);
20928  n144 = pow(alpha, n11*n136);
20929  n145 = pow(alpha, n12*n136);
20930  n146 = pow(alpha, n13*n136);
20931  n147 = pow(alpha, n136*n14);
20932  n148 = pow(alpha, n136*n15);
20933  n149 = pow(alpha, n136*n16);
20934  n150 = pow(alpha, n136*n17);
20935  n151 = n7/n140;
20936  n152 = n12/n145;
20937  n153 = n15/n148;
20938  n154 = n17/n150;
20939  n155 = n8/n141;
20940  n156 = n11/n144;
20941  n157 = n14/n147;
20942  n158 = n16/n149;
20943  n159 = n6/n139;
20944  n160 = n9/n142;
20945  n161 = n10/n143;
20946  n162 = -1/n137;
20947  n163 = n5/n138;
20948  n164 = n13/n146;
20949  n165 = n44/n146;
20950  n166 = pow(alpha, n136*n19) + n69 - 1;
20951  n167 = n70 - 1 + 1.0/n138;
20952  n168 = n74 - 1 + 1.0/n139;
20953  n169 = n75 - 1 + 1.0/n140;
20954  n170 = n76 - 1 + 1.0/n141;
20955  n171 = n77 - 1 + 1.0/n142;
20956  n172 = n78 - 1 + 1.0/n143;
20957  n173 = n79 - 1 + 1.0/n144;
20958  n174 = n80 - 1 + 1.0/n145;
20959  n175 = n81 - 1 + 1.0/n146;
20960  n176 = n82 - 1 + 1.0/n147;
20961  n177 = n83 - 1 + 1.0/n148;
20962  n178 = n84 - 1 + 1.0/n149;
20963  n179 = n85 - 1 + 1.0/n150;
20964  n180 = pow(n166, -n20);
20965  n181 = pow(n167, -n20);
20966  n182 = pow(n168, -n20);
20967  n183 = pow(n169, -n20);
20968  n184 = pow(n170, -n20);
20969  n185 = pow(n171, -n20);
20970  n186 = pow(n172, -n20);
20971  n187 = pow(n173, -n20);
20972  n188 = pow(n174, -n20);
20973  n189 = pow(n175, -n20);
20974  n190 = pow(n176, -n20);
20975  n191 = pow(n177, -n20);
20976  n192 = pow(n178, -n20);
20977  n193 = pow(n179, -n20);
20978  n194 = pow(n166, 3);
20979  n195 = pow(n167, 3);
20980  n196 = pow(n168, 3);
20981  n197 = pow(n169, 3);
20982  n198 = pow(n170, 3);
20983  n199 = pow(n171, 3);
20984  n200 = pow(n172, 3);
20985  n201 = pow(n173, 3);
20986  n202 = pow(n174, 3);
20987  n203 = pow(n175, 3);
20988  n204 = pow(n176, 3);
20989  n205 = pow(n177, 3);
20990  n206 = pow(n178, 3);
20991  n207 = pow(n179, 3);
20992  n208 = xF[11]/n168;
20993  n209 = xF[12]/n169;
20994  n210 = xF[0]/n166;
20995  n211 = xF[10]/n167;
20996  n212 = xF[13]/n170;
20997  n213 = xF[9]/n179;
20998  n214 = xF[8]/n178;
20999  n215 = xF[3]/n173;
21000  n216 = xF[3]/n187;
21001  n217 = xF[6]/n204;
21002  n218 = xF[10]/n181;
21003  n219 = n2*xF[4]/n174;
21004  n220 = n2*n215;
21005  n221 = n2/n180;
21006  n222 = n2*xF[6]/n176;
21007  n223 = n55*xF[5]/n175;
21008  n224 = n51*xF[1]/n171;
21009  n225 = n57*xF[7]/n177;
21010  n226 = n52*xF[2]/n172;
21011  n227 = n69/n194;
21012  n228 = n69/n180;
21013  n229 = n77/n199;
21014  n230 = n80*xF[4]/n188;
21015  n231 = n80*xF[4]/n202;
21016  n232 = -n112/n189;
21017  n233 = -n83*xF[7]/n205;
21018  n234 = -n77*xF[1]/n185;
21019  n235 = -n83*xF[7]/n191;
21020  n236 = -n84*xF[8]/n192;
21021  n237 = n213*n28*n41*n59;
21022  n238 = n28*n36*n54*xF[4]/n174;
21023  n239 = n28*n38*n56*xF[6]/n176;
21024  n240 = n19*n2*n210*n44*n61;
21025  n241 = n118*n210*n27*n61;
21026  n242 = n128*n211*n61;
21027  n243 = n127*n208*n61;
21028  n244 = n111*n209*n49*n61;
21029  n245 = n125*n212*n61;
21030  n246 = n113*n224*n61;
21031  n247 = n110*n226*n61;
21032  n248 = n129*n215*n61;
21033  n249 = n238*n61;
21034  n250 = n102*n223*n61;
21035  n251 = n239*n61;
21036  n252 = n106*n225*n61;
21037  n253 = n126*n214*n61;
21038  n254 = n237*n61;
21039  n255 = n118*n210*n61*n64;
21040  n256 = n133/n137 + 1;
21041  n257 = n100*n133*n2/n137 + n100*n2;
21042  n258 = n104*n2 + n134*n163;
21043  n259 = n121 + n134*n159;
21044  n260 = n122 + n134*n151;
21045  n261 = n107*n2 + n134*n155;
21046  n262 = n133*n44*n63/n142 + n51*n63;
21047  n263 = n133*n44*n65/n143 + n52*n65;
21048  n264 = n134*n156 + n2*n99;
21049  n265 = n103*n2 + n134*n152;
21050  n266 = n133*n165*n62 + n55*n62;
21051  n267 = n134*n157 + n2*n98;
21052  n268 = n133*n44*n68/n148 + n57*n68;
21053  n269 = n101*n2 + n134*n158;
21054  n270 = n109*n2 + n134*n154;
21055  n271 = pow(n257, -n20);
21056  n272 = pow(n258, -n20);
21057  n273 = pow(n259, -n20);
21058  n274 = pow(n260, -n20);
21059  n275 = pow(n261, -n20);
21060  n276 = pow(n262, -n20);
21061  n277 = pow(n263, -n20);
21062  n278 = pow(n264, -n20);
21063  n279 = pow(n265, -n20);
21064  n280 = pow(n266, -n20);
21065  n281 = pow(n267, -n20);
21066  n282 = pow(n268, -n20);
21067  n283 = pow(n269, -n20);
21068  n284 = pow(n270, -n20);
21069  n285 = n257*xF[0];
21070  n286 = n259*xF[11];
21071  n287 = n262*xF[1];
21072  n288 = n269*xF[8];
21073  n289 = n100*n133*n43/n137 + n100*n43;
21074  n290 = n271*xF[0];
21075  n291 = n276*xF[1];
21076  n292 = n118*n133*n66/n137 + n118*n66;
21077  n293 = n292*xF[0];
21078  n294 = n260/n183;
21079  n295 = n270/n193;
21080  n296 = n261/n184;
21081  n297 = n267*xF[6]/n190;
21082  n298 = n277/n200;
21083  n299 = n280/n203;
21084  n300 = n283*n84*xF[8]/n206;
21085  n301 = n273*n74*xF[11]/n196;
21086  n302 = n228*n285*n61;
21087  n303 = n100*n43*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n2 + n100*n2)/n180;
21088  n304 = n104*n218*n43*n61*(pow(alpha, NP0*n1 - n136*n5)*n133*n2*n5 + n104*n2);
21089  n305 = n43*n48*n6*n61*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n133*n2*n6 + n121)/n182;
21090  n306 = n122*n26*n61*(pow(alpha, NP0*n1 - n136*n7)*n133*n2*n7 + n122)/n183;
21091  n307 = n107*n43*n61*xF[13]*(pow(alpha, NP0*n1 - n136*n8)*n133*n2*n8 + n107*n2)/n184;
21092  n308 = n114*n43*n61*xF[1]*(pow(alpha, NP0*n1 - n136*n9)*n133*n63 + n51*n63)/n185;
21093  n309 = n10*n43*n52*n61*xF[2]*(pow(alpha, NP0*n1 - n10*n136)*n133*n65 + n52*n65)/n186;
21094  n310 = n216*n43*n61*n99*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n2 + n2*n99);
21095  n311 = n103*n43*n61*xF[4]*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n2 + n103*n2)/n188;
21096  n312 = n13*n43*n55*n61*xF[5]*(pow(alpha, NP0*n1 - n13*n136)*n133*n62 + n55*n62)/n189;
21097  n313 = n43*n61*n98*xF[6]*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n2 + n2*n98)/n190;
21098  n314 = n115*n43*n61*xF[7]*(pow(alpha, NP0*n1 - n136*n15)*n133*n68 + n57*n68)/n191;
21099  n315 = n101*n43*n61*xF[8]*(pow(alpha, NP0*n1 - n136*n16)*n133*n16*n2 + n101*n2)/n192;
21100  n316 = n109*n43*n61*xF[9]*(pow(alpha, NP0*n1 - n136*n17)*n133*n17*n2 + n109*n2)/n193;
21101  n317 = 1.0*n100*n221*n285*n61;
21102  n318 = n228*n293*n61;
21103  n319 = -n0*n318;
21104  n320 = n1*n135*n159 + n100*n133*n159*n28 + n127 - n135*n30/n139;
21105  n321 = n111*n91 + n111*n71*n73/(n131*n140*n72) + n118*n133*n151*n19 + n135*n151*n19;
21106  n322 = n118*n133*n155*n19 + n135*n155*n19 + n135*n32/n141 + n28*n32*n92;
21107  n323 = n110*n93 + n110*n71*n73/(n131*n143*n72) + n118*n133*n161*n19 + n135*n161*n19;
21108  n324 = n118*n133*n157*n19 + n135*n157*n19 + n135*n38/n147 + n28*n38*n96;
21109  n325 = n1*n135*n154 + n100*n133*n154*n28 - n135*n41/n150 + n28*n41*n59;
21110  n326 = n61*n75*xF[12]*(pow(alpha, n1*n24 - n136*n7)*n111*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n7)*n19*n28*n7*n73/(n131*n72) + n111*n91 + n118*n133*n151*n19)/n183;
21111  n327 = n61*n76*xF[13]*(pow(alpha, n1*n24 - n136*n8)*n19*n28*n73*n8/(n131*n72) + pow(alpha, n1*n24 - n136*n8)*n28*n32*n73/(n131*n72) + n118*n133*n155*n19 + n28*n32*n92)/n184;
21112  n328 = n108*n61*(pow(alpha, n1*n24 - n10*n136)*n10*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n10*n136)*n110*n73/(n131*n72) + n110*n93 + n118*n133*n161*n19)/n186;
21113  n329 = n230*n61*(pow(alpha, n1*n24 - n12*n136)*n12*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n12*n136)*n28*n36*n73/(n131*n72) + n118*n133*n152*n19 + n28*n36*n94);
21114  n330 = n105*n61*(pow(alpha, n1*n24 - n136*n14)*n14*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n14)*n28*n38*n73/(n131*n72) + n118*n133*n157*n19 + n28*n38*n96)/n190;
21115  n331 = n218*n61*n88*(pow(alpha, n1*n24 - n136*n5)*n1*n28*n5*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n5)*n28*n29*n73/(n131*n72) + n100*n133*n163*n28 + n128);
21116  n332 = n61*n89*xF[11]*(pow(alpha, n1*n24 - n136*n6)*n1*n28*n6*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n6)*n28*n30*n73/(n131*n72) + n100*n133*n159*n28 + n127)/n182;
21117  n333 = n234*n61*(pow(alpha, n1*n24 - n136*n9)*n1*n28*n73*n9/(n131*n72) - pow(alpha, n1*n24 - n136*n9)*n113*n73/(n131*n72) + n100*n133*n160*n28 + n113*n51);
21118  n334 = n232*n61*(pow(alpha, n1*n24 - n13*n136)*n1*n13*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n13*n136)*n102*n73/(n131*n72) + n100*n133*n164*n28 + n102*n55);
21119  n335 = n235*n61*(pow(alpha, n1*n24 - n136*n15)*n1*n15*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n15)*n106*n73/(n131*n72) + n100*n133*n153*n28 + n106*n57);
21120  n336 = n236*n61*(pow(alpha, n1*n24 - n136*n16)*n1*n16*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n16)*n28*n40*n73/(n131*n72) + n100*n133*n158*n28 + n126);
21121  n337 = n119*n61*(pow(alpha, n1*n24 - n136*n17)*n1*n17*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n17)*n28*n41*n73/(n131*n72) + n100*n133*n154*n28 + n28*n41*n59)/n193;
21122  n338 = xTj*(n100*n2*n210*n61 + n101*n2*n214*n61 + n103*n219*n61 + n104*n2*n211*n61 + n107*n2*n212*n61 - n108*n263*n61/n186 + n109*n2*n213*n61 + n117*n294*n61 + n119*n295*n61 + n120*n296*n61 + n121*n208*n61 + n122*n209*n61 + n216*n264*n61*n86 + n218*n258*n61*n88 + n220*n61*n99 + n222*n61*n98 + n223*n61*n62 + n224*n61*n63 + n225*n61*n68 + n226*n61*n65 - n230*n265*n61 + n232*n266*n61 + n234*n262*n61 + n235*n268*n61 + n236*n269*n61 + n297*n61*n87 - n302 + n286*n61*n89/n182);
21123  n339 = n240 + n302 + n338;
21124  n340 = n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n318 + n326 + n327 + n328 + n329 + n330 + n331 + n332 + n333 + n334 + n335 + n336 + n337;
21125  n341 = -n108*n263*n61*(n10*n43*n52 + n133*n161*n43*n44)/n200 - n112*n266*n61*(n13*n43*n55 + n133*n164*n43*n44)/n203 + n117*n260*n61*(n133*n151*n43*n44 + n43*n49*n7)/n197 + n119*n270*n61*(n109*n43 + n133*n154*n43*n44)/n207 + n120*n261*n61*(n107*n43 + n133*n155*n43*n44)/n198 + n216*n61*n86*(pow(alpha, n1*n24 - n11*n136)*n1*n11*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n11*n136)*n28*n67*n73/(n131*n72) + n100*n133*n156*n28 + n129) + n217*n267*n61*n87*(n133*n157*n43*n44 + n43*n98) - n227*n285*n289*n61 - n229*n287*n61*(n114*n43 + n133*n160*n43*n44) - n231*n265*n61*(n103*n43 + n133*n152*n43*n44) + n233*n268*n61*(n115*n43 + n133*n153*n43*n44) + n340 - n288*n61*n84*(n101*n43 + n133*n158*n43*n44)/n206 + n264*n61*n86*xF[3]*(n133*n156*n43*n44 + n43*n99)/n201 + n286*n61*n89*(n133*n159*n43*n44 + n43*n48*n6)/n196 + n258*n61*n88*xF[10]*(n104*n43 + n133*n163*n43*n44)/n195;
21126  NP_b = -n100*n221*n256*n61*n69*xF[0] - n24*(-n0*n228*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n133*n28*n66 + n118*n66) + n0*xTj*(n105*n20*n281*n61/n204 + n105*n61*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n19*n28 + pow(alpha, n1*n24 - n136*n14)*n14*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n14)*n28*n38*n73/(n131*n72) + n28*n38*n96)/n190 + n108*n20*n298*n61 + n108*n61*(pow(alpha, NP0*n1 - n10*n136)*n10*n133*n19*n28 + pow(alpha, n1*n24 - n10*n136)*n10*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n10*n136)*n110*n73/(n131*n72) + n110*n93)/n186 + n112*n20*n299*n61 + n119*n61*(pow(alpha, NP0*n1 - n136*n17)*n1*n133*n17*n28 + pow(alpha, n1*n24 - n136*n17)*n1*n17*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n17)*n28*n41*n73/(n131*n72) + n28*n41*n59)/n193 + n20*n227*n290*n61 + n20*n229*n291*n61 + n20*n231*n279*n61 + n20*n300*n61 + n20*n301*n61 + n20*n284*n61*n85*xF[9]/n207 + n20*n282*n61*n83*xF[7]/n205 + n20*n278*n61*n79*xF[3]/n201 + n216*n61*n79*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n19*n28 + pow(alpha, n1*n24 - n11*n136)*n11*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n11*n136)*n28*n35*n73/(n131*n72) + n28*n53*n67) + n218*n61*n88*(pow(alpha, NP0*n1 - n136*n5)*n1*n133*n28*n5 + pow(alpha, n1*n24 - n136*n5)*n1*n28*n5*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n5)*n28*n29*n73/(n131*n72) + n128) + n228*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n133*n28*n66 + n118*n66) + n230*n61*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n19*n28 + pow(alpha, n1*n24 - n12*n136)*n12*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n12*n136)*n28*n36*n73/(n131*n72) + n28*n36*n94) + n232*n61*(pow(alpha, NP0*n1 - n13*n136)*n1*n13*n133*n28 + pow(alpha, n1*n24 - n13*n136)*n1*n13*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n13*n136)*n102*n73/(n131*n72) + n102*n55) + n234*n61*(pow(alpha, NP0*n1 - n136*n9)*n1*n133*n28*n9 + pow(alpha, n1*n24 - n136*n9)*n1*n28*n73*n9/(n131*n72) - pow(alpha, n1*n24 - n136*n9)*n113*n73/(n131*n72) + n113*n51) + n235*n61*(pow(alpha, NP0*n1 - n136*n15)*n1*n133*n15*n28 + pow(alpha, n1*n24 - n136*n15)*n1*n15*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n15)*n106*n73/(n131*n72) + n106*n57) + n236*n61*(pow(alpha, NP0*n1 - n136*n16)*n1*n133*n16*n28 + pow(alpha, n1*n24 - n136*n16)*n1*n16*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n16)*n28*n40*n73/(n131*n72) + n126) + n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n20*n275*n61*n76*xF[13]/n198 + n20*n274*n61*n75*xF[12]/n197 + n20*n272*n61*n70*xF[10]/n195 + n61*n76*xF[13]*(pow(alpha, NP0*n1 - n136*n8)*n133*n19*n28*n8 + pow(alpha, n1*n24 - n136*n8)*n19*n28*n73*n8/(n131*n72) + pow(alpha, n1*n24 - n136*n8)*n28*n32*n73/(n131*n72) + n28*n32*n92)/n184 + n61*n75*xF[12]*(pow(alpha, NP0*n1 - n136*n7)*n133*n19*n28*n7 + pow(alpha, n1*n24 - n136*n7)*n111*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n7)*n19*n28*n7*n73/(n131*n72) + n111*n91)/n183 + n61*n89*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n1*n133*n28*n6 + pow(alpha, n1*n24 - n136*n6)*n1*n28*n6*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n6)*n28*n30*n73/(n131*n72) + n127)/n182) + 1.0*n100*n221*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n2 + n100*n2) - 1.0*n227*n290*n61 + n255) - n240 - n61*xTj*(n100*n2*n210 + n101*n2*n214 + n103*n219 + n104*n2*n211 + n107*n2*n212 - n108*n263/n186 + n109*n2*n213 + n117*n294 + n119*n295 + n120*n296 + n121*n208 + n122*n209 + n216*n264*n86 + n218*n258*n88 + n220*n99 + n222*n98 + n223*n62 + n224*n63 + n225*n68 + n226*n65 - n228*n285 - n230*n265 + n232*n266 + n234*n262 + n235*n268 + n236*n269 + n297*n87 + n286*n89/n182);
21127  NP_2a = -n61*(-1.0*n118*n210*n27 + n118*n228*n66*xF[0]*(-1 + (-n21 + xPj*xTj)/(n130*n137*n45)) - n124*n20*n227*pow(n256, -n20)*n27 - 2.0*n124*n256*n27/n180 + 1.0*xTj*(n10*n43*n52*xF[2]*(pow(alpha, NP0*n1 - n10*n136)*n133*n65 + n52*n65)/n186 + n100*n43*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n2 + n100*n2)/n180 + n101*n43*xF[8]*(pow(alpha, NP0*n1 - n136*n16)*n133*n16*n2 + n101*n2)/n192 + n102*n223 + n103*n43*xF[4]*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n2 + n103*n2)/n188 + n104*n218*n43*(pow(alpha, NP0*n1 - n136*n5)*n133*n2*n5 + n104*n2) + n105*n20*n281/n204 + n105*(pow(alpha, n1*n24 - n136*n14)*n14*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n14)*n28*n38*n73/(n131*n72) + n118*n133*n157*n19 + n28*n38*n96)/n190 + n106*n225 + n107*n43*xF[13]*(pow(alpha, NP0*n1 - n136*n8)*n133*n2*n8 + n107*n2)/n184 + n108*n20*n298 + n108*(pow(alpha, n1*n24 - n10*n136)*n10*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n10*n136)*n110*n73/(n131*n72) + n110*n93 + n118*n133*n161*n19)/n186 + n109*n43*xF[9]*(pow(alpha, NP0*n1 - n136*n17)*n133*n17*n2 + n109*n2)/n193 + n110*n226 + n111*n209*n49 + n112*n20*n299 + n113*n224 + n114*n43*xF[1]*(pow(alpha, NP0*n1 - n136*n9)*n133*n63 + n51*n63)/n185 + n115*n43*xF[7]*(pow(alpha, NP0*n1 - n136*n15)*n133*n68 + n57*n68)/n191 + n118*n210*n27 + n119*(pow(alpha, n1*n24 - n136*n17)*n1*n17*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n17)*n28*n41*n73/(n131*n72) + n100*n133*n154*n28 + n28*n41*n59)/n193 + n122*n26*(pow(alpha, NP0*n1 - n136*n7)*n133*n2*n7 + n122)/n183 + n125*n212 + n126*n214 + n127*n208 + n128*n211 + n129*n215 + n13*n43*n55*xF[5]*(pow(alpha, NP0*n1 - n13*n136)*n133*n62 + n55*n62)/n189 + n20*n227*n290 + n20*n229*n291 + n20*n231*n279 + n20*n300 + n20*n301 + n20*n284*n85*xF[9]/n207 + n20*n282*n83*xF[7]/n205 + n20*n278*n79*xF[3]/n201 + n216*n43*n99*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n2 + n2*n99) + n216*n86*(pow(alpha, n1*n24 - n11*n136)*n1*n11*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n11*n136)*n28*n67*n73/(n131*n72) + n100*n133*n156*n28 + n129) + n218*n88*(pow(alpha, n1*n24 - n136*n5)*n1*n28*n5*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n5)*n28*n29*n73/(n131*n72) + n100*n133*n163*n28 + n128) + n228*n293 + n230*(pow(alpha, n1*n24 - n12*n136)*n12*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n12*n136)*n28*n36*n73/(n131*n72) + n118*n133*n152*n19 + n28*n36*n94) + n232*(pow(alpha, n1*n24 - n13*n136)*n1*n13*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n13*n136)*n102*n73/(n131*n72) + n100*n133*n164*n28 + n102*n55) + n234*(pow(alpha, n1*n24 - n136*n9)*n1*n28*n73*n9/(n131*n72) - pow(alpha, n1*n24 - n136*n9)*n113*n73/(n131*n72) + n100*n133*n160*n28 + n113*n51) + n235*(pow(alpha, n1*n24 - n136*n15)*n1*n15*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n15)*n106*n73/(n131*n72) + n100*n133*n153*n28 + n106*n57) + n236*(pow(alpha, n1*n24 - n136*n16)*n1*n16*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n16)*n28*n40*n73/(n131*n72) + n100*n133*n158*n28 + n126) + n237 + n238 + n239 + n20*n275*n76*xF[13]/n198 + n20*n274*n75*xF[12]/n197 + n20*n272*n70*xF[10]/n195 + n43*n98*xF[6]*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n2 + n2*n98)/n190 + n76*xF[13]*(pow(alpha, n1*n24 - n136*n8)*n19*n28*n73*n8/(n131*n72) + pow(alpha, n1*n24 - n136*n8)*n28*n32*n73/(n131*n72) + n118*n133*n155*n19 + n28*n32*n92)/n184 + n75*xF[12]*(pow(alpha, n1*n24 - n136*n7)*n111*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n7)*n19*n28*n7*n73/(n131*n72) + n111*n91 + n118*n133*n151*n19)/n183 + n43*n48*n6*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n133*n2*n6 + n121)/n182 + n89*xF[11]*(pow(alpha, n1*n24 - n136*n6)*n1*n28*n6*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n6)*n28*n30*n73/(n131*n72) + n100*n133*n159*n28 + n127)/n182));
21128  NP_sqrt_base = (-NP0*n339 - n23*(-n105*n61/(n82 - 1 + pow(alpha, -n14*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n108*n61/(n78 - 1 + pow(alpha, -n10*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n112*n61/(n81 - 1 + pow(alpha, -n13*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n69*xF[0]/(pow(alpha, n19*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1)) + n69 - 1) - n61*n70*xF[10]/(n70 - 1 + pow(alpha, -n5*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n74*xF[11]/(n74 - 1 + pow(alpha, -n6*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n75*xF[12]/(n75 - 1 + pow(alpha, -n7*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n76*xF[13]/(n76 - 1 + pow(alpha, -n8*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n77*xF[1]/(n77 - 1 + pow(alpha, -n9*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n79*xF[3]/(n79 - 1 + pow(alpha, -n11*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n80*xF[4]/(n80 - 1 + pow(alpha, -n12*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n83*xF[7]/(n83 - 1 + pow(alpha, -n15*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n84*xF[8]/(n84 - 1 + pow(alpha, -n16*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1))) - n61*n85*xF[9]/(n85 - 1 + pow(alpha, -n17*(n97*(n132 - log(n90*(n21 + n25*xTj)/(n21 - xF[0]*xTj) + 1)) + 1)))) + n61*n69*xF[0]/(-n162 + n69 - 1) - pow(NP0, -n20)*(n0*n227*n285*n289*n61 - n0*n23*(n105*n61*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n19*n28 + pow(alpha, n1*n24 - n136*n14)*n14*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n14)*n28*n38*n73/(n131*n72) + n28*n38*n96)/n190 - n108*n61*(pow(alpha, NP0*n1 - n10*n136)*n133*n65 + n52*n65)*(pow(alpha, NP0*n1 - n10*n136)*n10*n133*n43 + n10*n43*n52)/n200 + n108*n61*(pow(alpha, NP0*n1 - n10*n136)*n10*n133*n19*n28 + pow(alpha, n1*n24 - n10*n136)*n10*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n10*n136)*n110*n73/(n131*n72) + n110*n93)/n186 - n112*n61*(pow(alpha, NP0*n1 - n13*n136)*n133*n62 + n55*n62)*(pow(alpha, NP0*n1 - n13*n136)*n13*n133*n43 + n13*n43*n55)/n203 + n117*n61*(pow(alpha, NP0*n1 - n136*n7)*n133*n2*n7 + n122)*(pow(alpha, NP0*n1 - n136*n7)*n133*n43*n7 + n43*n49*n7)/n197 + n119*n61*(pow(alpha, NP0*n1 - n136*n17)*n133*n17*n2 + n109*n2)*(pow(alpha, NP0*n1 - n136*n17)*n133*n17*n43 + n109*n43)/n207 + n119*n61*(pow(alpha, NP0*n1 - n136*n17)*n1*n133*n17*n28 + pow(alpha, n1*n24 - n136*n17)*n1*n17*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n17)*n28*n41*n73/(n131*n72) + n28*n41*n59)/n193 + n120*n61*(pow(alpha, NP0*n1 - n136*n8)*n133*n2*n8 + n107*n2)*(pow(alpha, NP0*n1 - n136*n8)*n133*n43*n8 + n107*n43)/n198 + n216*n61*n86*(pow(alpha, NP0*n1 - n11*n136)*n1*n11*n133*n28 + pow(alpha, n1*n24 - n11*n136)*n1*n11*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n11*n136)*n28*n67*n73/(n131*n72) + n129) + n217*n61*n87*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n2 + n2*n98)*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n43 + n43*n98) + n218*n61*n88*(pow(alpha, NP0*n1 - n136*n5)*n1*n133*n28*n5 + pow(alpha, n1*n24 - n136*n5)*n1*n28*n5*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n5)*n28*n29*n73/(n131*n72) + n128) - n227*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n2 + n100*n2)*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n43 + n100*n43) + n228*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n133*n28*n66 + n118*n66) - n229*n61*xF[1]*(pow(alpha, NP0*n1 - n136*n9)*n133*n63 + n51*n63)*(pow(alpha, NP0*n1 - n136*n9)*n133*n43*n9 + n114*n43) + n230*n61*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n19*n28 + pow(alpha, n1*n24 - n12*n136)*n12*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n12*n136)*n28*n36*n73/(n131*n72) + n28*n36*n94) - n231*n61*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n2 + n103*n2)*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n43 + n103*n43) + n232*n61*(pow(alpha, NP0*n1 - n13*n136)*n1*n13*n133*n28 + pow(alpha, n1*n24 - n13*n136)*n1*n13*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n13*n136)*n102*n73/(n131*n72) + n102*n55) + n233*n61*(pow(alpha, NP0*n1 - n136*n15)*n133*n68 + n57*n68)*(pow(alpha, NP0*n1 - n136*n15)*n133*n15*n43 + n115*n43) + n234*n61*(pow(alpha, NP0*n1 - n136*n9)*n1*n133*n28*n9 + pow(alpha, n1*n24 - n136*n9)*n1*n28*n73*n9/(n131*n72) - pow(alpha, n1*n24 - n136*n9)*n113*n73/(n131*n72) + n113*n51) + n235*n61*(pow(alpha, NP0*n1 - n136*n15)*n1*n133*n15*n28 + pow(alpha, n1*n24 - n136*n15)*n1*n15*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n15)*n106*n73/(n131*n72) + n106*n57) + n236*n61*(pow(alpha, NP0*n1 - n136*n16)*n1*n133*n16*n28 + pow(alpha, n1*n24 - n136*n16)*n1*n16*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n16)*n28*n40*n73/(n131*n72) + n126) + n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 - n61*n84*xF[8]*(pow(alpha, NP0*n1 - n136*n16)*n133*n16*n2 + n101*n2)*(pow(alpha, NP0*n1 - n136*n16)*n133*n16*n43 + n101*n43)/n206 + n61*n86*xF[3]*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n2 + n2*n99)*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n43 + n43*n99)/n201 + n61*n89*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n133*n2*n6 + n121)*(pow(alpha, NP0*n1 - n136*n6)*n133*n43*n6 + n43*n48*n6)/n196 + n61*n88*xF[10]*(pow(alpha, NP0*n1 - n136*n5)*n133*n2*n5 + n104*n2)*(pow(alpha, NP0*n1 - n136*n5)*n133*n43*n5 + n104*n43)/n195 + n61*n76*xF[13]*(pow(alpha, NP0*n1 - n136*n8)*n133*n19*n28*n8 + pow(alpha, n1*n24 - n136*n8)*n19*n28*n73*n8/(n131*n72) + pow(alpha, n1*n24 - n136*n8)*n28*n32*n73/(n131*n72) + n28*n32*n92)/n184 + n61*n75*xF[12]*(pow(alpha, NP0*n1 - n136*n7)*n133*n19*n28*n7 + pow(alpha, n1*n24 - n136*n7)*n111*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n7)*n19*n28*n7*n73/(n131*n72) + n111*n91)/n183 + n61*n89*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n1*n133*n28*n6 + pow(alpha, n1*n24 - n136*n6)*n1*n28*n6*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n6)*n28*n30*n73/(n131*n72) + n127)/n182) - n0*n241 - n0*n318 + 1.0*n100*n221*n285*n61))*(4.0*n100*n221*n285*n61 - n20*n23*(n105*n61*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n19*n28 + pow(alpha, n1*n24 - n136*n14)*n14*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n14)*n28*n38*n73/(n131*n72) + n28*n38*n96)/n190 - n108*n61*(pow(alpha, NP0*n1 - n10*n136)*n133*n65 + n52*n65)*(pow(alpha, NP0*n1 - n10*n136)*n10*n133*n43 + n10*n43*n52)/n200 + n108*n61*(pow(alpha, NP0*n1 - n10*n136)*n10*n133*n19*n28 + pow(alpha, n1*n24 - n10*n136)*n10*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n10*n136)*n110*n73/(n131*n72) + n110*n93)/n186 - n112*n61*(pow(alpha, NP0*n1 - n13*n136)*n133*n62 + n55*n62)*(pow(alpha, NP0*n1 - n13*n136)*n13*n133*n43 + n13*n43*n55)/n203 + n117*n61*(pow(alpha, NP0*n1 - n136*n7)*n133*n2*n7 + n122)*(pow(alpha, NP0*n1 - n136*n7)*n133*n43*n7 + n43*n49*n7)/n197 + n119*n61*(pow(alpha, NP0*n1 - n136*n17)*n133*n17*n2 + n109*n2)*(pow(alpha, NP0*n1 - n136*n17)*n133*n17*n43 + n109*n43)/n207 + n119*n61*(pow(alpha, NP0*n1 - n136*n17)*n1*n133*n17*n28 + pow(alpha, n1*n24 - n136*n17)*n1*n17*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n17)*n28*n41*n73/(n131*n72) + n28*n41*n59)/n193 + n120*n61*(pow(alpha, NP0*n1 - n136*n8)*n133*n2*n8 + n107*n2)*(pow(alpha, NP0*n1 - n136*n8)*n133*n43*n8 + n107*n43)/n198 + n216*n61*n86*(pow(alpha, NP0*n1 - n11*n136)*n1*n11*n133*n28 + pow(alpha, n1*n24 - n11*n136)*n1*n11*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n11*n136)*n28*n67*n73/(n131*n72) + n129) + n217*n61*n87*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n2 + n2*n98)*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n43 + n43*n98) + n218*n61*n88*(pow(alpha, NP0*n1 - n136*n5)*n1*n133*n28*n5 + pow(alpha, n1*n24 - n136*n5)*n1*n28*n5*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n5)*n28*n29*n73/(n131*n72) + n128) - n227*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n2 + n100*n2)*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n43 + n100*n43) + n228*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n133*n28*n66 + n118*n66) - n229*n61*xF[1]*(pow(alpha, NP0*n1 - n136*n9)*n133*n63 + n51*n63)*(pow(alpha, NP0*n1 - n136*n9)*n133*n43*n9 + n114*n43) + n230*n61*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n19*n28 + pow(alpha, n1*n24 - n12*n136)*n12*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n12*n136)*n28*n36*n73/(n131*n72) + n28*n36*n94) - n231*n61*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n2 + n103*n2)*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n43 + n103*n43) + n232*n61*(pow(alpha, NP0*n1 - n13*n136)*n1*n13*n133*n28 + pow(alpha, n1*n24 - n13*n136)*n1*n13*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n13*n136)*n102*n73/(n131*n72) + n102*n55) + n233*n61*(pow(alpha, NP0*n1 - n136*n15)*n133*n68 + n57*n68)*(pow(alpha, NP0*n1 - n136*n15)*n133*n15*n43 + n115*n43) + n234*n61*(pow(alpha, NP0*n1 - n136*n9)*n1*n133*n28*n9 + pow(alpha, n1*n24 - n136*n9)*n1*n28*n73*n9/(n131*n72) - pow(alpha, n1*n24 - n136*n9)*n113*n73/(n131*n72) + n113*n51) + n235*n61*(pow(alpha, NP0*n1 - n136*n15)*n1*n133*n15*n28 + pow(alpha, n1*n24 - n136*n15)*n1*n15*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n15)*n106*n73/(n131*n72) + n106*n57) + n236*n61*(pow(alpha, NP0*n1 - n136*n16)*n1*n133*n16*n28 + pow(alpha, n1*n24 - n136*n16)*n1*n16*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n16)*n28*n40*n73/(n131*n72) + n126) + n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 - n61*n84*xF[8]*(pow(alpha, NP0*n1 - n136*n16)*n133*n16*n2 + n101*n2)*(pow(alpha, NP0*n1 - n136*n16)*n133*n16*n43 + n101*n43)/n206 + n61*n86*xF[3]*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n2 + n2*n99)*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n43 + n43*n99)/n201 + n61*n89*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n133*n2*n6 + n121)*(pow(alpha, NP0*n1 - n136*n6)*n133*n43*n6 + n43*n48*n6)/n196 + n61*n88*xF[10]*(pow(alpha, NP0*n1 - n136*n5)*n133*n2*n5 + n104*n2)*(pow(alpha, NP0*n1 - n136*n5)*n133*n43*n5 + n104*n43)/n195 + n61*n76*xF[13]*(pow(alpha, NP0*n1 - n136*n8)*n133*n19*n28*n8 + pow(alpha, n1*n24 - n136*n8)*n19*n28*n73*n8/(n131*n72) + pow(alpha, n1*n24 - n136*n8)*n28*n32*n73/(n131*n72) + n28*n32*n92)/n184 + n61*n75*xF[12]*(pow(alpha, NP0*n1 - n136*n7)*n133*n19*n28*n7 + pow(alpha, n1*n24 - n136*n7)*n111*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n7)*n19*n28*n7*n73/(n131*n72) + n111*n91)/n183 + n61*n89*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n1*n133*n28*n6 + pow(alpha, n1*n24 - n136*n6)*n1*n28*n6*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n6)*n28*n30*n73/(n131*n72) + n127)/n182) - 4.0*n227*n290*n61 + 2.0*n241 + 2.0*n318) + pow(-n24*(n0*n227*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n2 + n100*n2)*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n43 + n100*n43) - n0*n228*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n133*n28*n66 + n118*n66) + n0*xTj*(n105*n61*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n19*n28 + pow(alpha, n1*n24 - n136*n14)*n14*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n14)*n28*n38*n73/(n131*n72) + n28*n38*n96)/n190 - n108*n61*(pow(alpha, NP0*n1 - n10*n136)*n133*n65 + n52*n65)*(pow(alpha, NP0*n1 - n10*n136)*n10*n133*n43 + n10*n43*n52)/n200 + n108*n61*(pow(alpha, NP0*n1 - n10*n136)*n10*n133*n19*n28 + pow(alpha, n1*n24 - n10*n136)*n10*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n10*n136)*n110*n73/(n131*n72) + n110*n93)/n186 - n112*n61*(pow(alpha, NP0*n1 - n13*n136)*n133*n62 + n55*n62)*(pow(alpha, NP0*n1 - n13*n136)*n13*n133*n43 + n13*n43*n55)/n203 + n117*n61*(pow(alpha, NP0*n1 - n136*n7)*n133*n2*n7 + n122)*(pow(alpha, NP0*n1 - n136*n7)*n133*n43*n7 + n43*n49*n7)/n197 + n119*n61*(pow(alpha, NP0*n1 - n136*n17)*n133*n17*n2 + n109*n2)*(pow(alpha, NP0*n1 - n136*n17)*n133*n17*n43 + n109*n43)/n207 + n119*n61*(pow(alpha, NP0*n1 - n136*n17)*n1*n133*n17*n28 + pow(alpha, n1*n24 - n136*n17)*n1*n17*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n17)*n28*n41*n73/(n131*n72) + n28*n41*n59)/n193 + n120*n61*(pow(alpha, NP0*n1 - n136*n8)*n133*n2*n8 + n107*n2)*(pow(alpha, NP0*n1 - n136*n8)*n133*n43*n8 + n107*n43)/n198 + n216*n61*n86*(pow(alpha, NP0*n1 - n11*n136)*n1*n11*n133*n28 + pow(alpha, n1*n24 - n11*n136)*n1*n11*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n11*n136)*n28*n67*n73/(n131*n72) + n129) + n217*n61*n87*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n2 + n2*n98)*(pow(alpha, NP0*n1 - n136*n14)*n133*n14*n43 + n43*n98) + n218*n61*n88*(pow(alpha, NP0*n1 - n136*n5)*n1*n133*n28*n5 + pow(alpha, n1*n24 - n136*n5)*n1*n28*n5*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n5)*n28*n29*n73/(n131*n72) + n128) - n227*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n2 + n100*n2)*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n43 + n100*n43) + n228*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n133*n28*n66 + n118*n66) - n229*n61*xF[1]*(pow(alpha, NP0*n1 - n136*n9)*n133*n63 + n51*n63)*(pow(alpha, NP0*n1 - n136*n9)*n133*n43*n9 + n114*n43) + n230*n61*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n19*n28 + pow(alpha, n1*n24 - n12*n136)*n12*n19*n28*n73/(n131*n72) + pow(alpha, n1*n24 - n12*n136)*n28*n36*n73/(n131*n72) + n28*n36*n94) - n231*n61*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n2 + n103*n2)*(pow(alpha, NP0*n1 - n12*n136)*n12*n133*n43 + n103*n43) + n232*n61*(pow(alpha, NP0*n1 - n13*n136)*n1*n13*n133*n28 + pow(alpha, n1*n24 - n13*n136)*n1*n13*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n13*n136)*n102*n73/(n131*n72) + n102*n55) + n233*n61*(pow(alpha, NP0*n1 - n136*n15)*n133*n68 + n57*n68)*(pow(alpha, NP0*n1 - n136*n15)*n133*n15*n43 + n115*n43) + n234*n61*(pow(alpha, NP0*n1 - n136*n9)*n1*n133*n28*n9 + pow(alpha, n1*n24 - n136*n9)*n1*n28*n73*n9/(n131*n72) - pow(alpha, n1*n24 - n136*n9)*n113*n73/(n131*n72) + n113*n51) + n235*n61*(pow(alpha, NP0*n1 - n136*n15)*n1*n133*n15*n28 + pow(alpha, n1*n24 - n136*n15)*n1*n15*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n15)*n106*n73/(n131*n72) + n106*n57) + n236*n61*(pow(alpha, NP0*n1 - n136*n16)*n1*n133*n16*n28 + pow(alpha, n1*n24 - n136*n16)*n1*n16*n28*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n16)*n28*n40*n73/(n131*n72) + n126) + n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n251 + n252 + n253 + n254 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 - n61*n84*xF[8]*(pow(alpha, NP0*n1 - n136*n16)*n133*n16*n2 + n101*n2)*(pow(alpha, NP0*n1 - n136*n16)*n133*n16*n43 + n101*n43)/n206 + n61*n86*xF[3]*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n2 + n2*n99)*(pow(alpha, NP0*n1 - n11*n136)*n11*n133*n43 + n43*n99)/n201 + n61*n89*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n133*n2*n6 + n121)*(pow(alpha, NP0*n1 - n136*n6)*n133*n43*n6 + n43*n48*n6)/n196 + n61*n88*xF[10]*(pow(alpha, NP0*n1 - n136*n5)*n133*n2*n5 + n104*n2)*(pow(alpha, NP0*n1 - n136*n5)*n133*n43*n5 + n104*n43)/n195 + n61*n76*xF[13]*(pow(alpha, NP0*n1 - n136*n8)*n133*n19*n28*n8 + pow(alpha, n1*n24 - n136*n8)*n19*n28*n73*n8/(n131*n72) + pow(alpha, n1*n24 - n136*n8)*n28*n32*n73/(n131*n72) + n28*n32*n92)/n184 + n61*n75*xF[12]*(pow(alpha, NP0*n1 - n136*n7)*n133*n19*n28*n7 + pow(alpha, n1*n24 - n136*n7)*n111*n73/(n131*n72) + pow(alpha, n1*n24 - n136*n7)*n19*n28*n7*n73/(n131*n72) + n111*n91)/n183 + n61*n89*xF[11]*(pow(alpha, NP0*n1 - n136*n6)*n1*n133*n28*n6 + pow(alpha, n1*n24 - n136*n6)*n1*n28*n6*n73/(n131*n72) - pow(alpha, n1*n24 - n136*n6)*n28*n30*n73/(n131*n72) + n127)/n182) + 1.0*n100*n221*n61*xF[0]*(pow(alpha, NP0*n1 - n1*n136)*n1*n133*n2 + n100*n2) + n255) - n339, -n20);
21129  NP_sqrt_base = fabs(NP_sqrt_base);
21130  NP1 = (-NP_b - pow(NP_sqrt_base, -n0))/NP_2a;
21131  NT1 = n97*(n132 - log(-pow(alpha, NP1*n1)*n123 + 1));
21132  g0 = MW[1] - Mstar;
21133  g1 = MW[0] - Mstar;
21134  g2 = NT1 + 1;
21135  g3 = xPj - xTj;
21136  g4 = MW[10] - Mstar;
21137  g5 = MW[11] - Mstar;
21138  g6 = MW[12] - Mstar;
21139  g7 = MW[13] - Mstar;
21140  g8 = MW[2] - Mstar;
21141  g9 = MW[3] - Mstar;
21142  g10 = MW[4] - Mstar;
21143  g11 = MW[5] - Mstar;
21144  g12 = MW[6] - Mstar;
21145  g13 = MW[7] - Mstar;
21146  g14 = MW[8] - Mstar;
21147  g15 = MW[9] - Mstar;
21148  g16 = xF[0] - xTj;
21149  g17 = xF[0] - xPj;
21150  g18 = -xTj;
21151  g19 = xPj/xF[1];
21152  g20 = pow(alpha, -g1);
21153  g21 = pow(alpha, -g4);
21154  g22 = pow(alpha, -g5);
21155  g23 = pow(alpha, -g6);
21156  g24 = pow(alpha, -g7);
21157  g25 = pow(alpha, -g0);
21158  g26 = pow(alpha, -g8);
21159  g27 = pow(alpha, -g9);
21160  g28 = pow(alpha, -g10);
21161  g29 = pow(alpha, -g11);
21162  g30 = pow(alpha, -g12);
21163  g31 = pow(alpha, -g13);
21164  g32 = pow(alpha, -g14);
21165  g33 = pow(alpha, -g15);
21166  g34 = log(xF[0]/xF[1]);
21167  g35 = -g2;
21168  g36 = pow(alpha, NP1*g0);
21169  g37 = pow(alpha, NP1*g1);
21170  g38 = pow(alpha, NP1*g4);
21171  g39 = log(g20);
21172  g40 = pow(alpha, NP1*g5);
21173  g41 = pow(alpha, NP1*g6);
21174  g42 = pow(alpha, NP1*g7);
21175  g43 = pow(alpha, NP1*g8);
21176  g44 = pow(alpha, NP1*g9);
21177  g45 = pow(alpha, NP1*g10);
21178  g46 = pow(alpha, NP1*g11);
21179  g47 = pow(alpha, NP1*g12);
21180  g48 = pow(alpha, NP1*g13);
21181  g49 = pow(alpha, NP1*g14);
21182  g50 = pow(alpha, NP1*g15);
21183  g51 = -g34;
21184  g52 = g16/g3;
21185  g53 = g3/g16;
21186  g54 = -g36 + 1;
21187  g55 = -g36 + 1;
21188  g56 = -g37 + 1;
21189  g57 = -g43 + 1;
21190  g58 = -g44 + 1;
21191  g59 = -g45 + 1;
21192  g60 = -g46 + 1;
21193  g61 = -g47 + 1;
21194  g62 = -g48 + 1;
21195  g63 = -g49 + 1;
21196  g64 = -g50 + 1;
21197  g65 = -g38 + 1;
21198  g66 = -g40 + 1;
21199  g67 = -g41 + 1;
21200  g68 = -g42 + 1;
21201  g69 = -g37;
21202  g70 = -g38;
21203  g71 = -g40;
21204  g72 = -g41;
21205  g73 = -g42;
21206  g74 = -g43;
21207  g75 = -g44;
21208  g76 = -g45;
21209  g77 = -g46;
21210  g78 = -g47;
21211  g79 = -g48;
21212  g80 = -g49;
21213  g81 = -g50;
21214  g82 = -1.0*g34;
21215  g83 = -g3/g17;
21216  g84 = g17/(g3*xF[1]);
21217  g85 = pow(alpha, g0*g35) - 1;
21218  g86 = pow(alpha, g0*g35) - 1;
21219  g87 = pow(alpha, g1*g35) - 1;
21220  g88 = pow(alpha, g35*g8) - 1;
21221  g89 = pow(alpha, g35*g9) - 1;
21222  g90 = pow(alpha, g10*g35) - 1;
21223  g91 = pow(alpha, g11*g35) - 1;
21224  g92 = pow(alpha, g12*g35) - 1;
21225  g93 = pow(alpha, g13*g35) - 1;
21226  g94 = pow(alpha, g14*g35) - 1;
21227  g95 = pow(alpha, g15*g35) - 1;
21228  g96 = pow(alpha, g35*g4) - 1;
21229  g97 = pow(alpha, g35*g5) - 1;
21230  g98 = pow(alpha, g35*g6) - 1;
21231  g99 = pow(alpha, g35*g7) - 1;
21232  g100 = -pow(alpha, g1*g35);
21233  g101 = -pow(alpha, g35*g4);
21234  g102 = -pow(alpha, g35*g5);
21235  g103 = -pow(alpha, g35*g6);
21236  g104 = -pow(alpha, g35*g7);
21237  g105 = -pow(alpha, g35*g8);
21238  g106 = -pow(alpha, g35*g9);
21239  g107 = -pow(alpha, g10*g35);
21240  g108 = -pow(alpha, g11*g35);
21241  g109 = -pow(alpha, g12*g35);
21242  g110 = -pow(alpha, g13*g35);
21243  g111 = -pow(alpha, g14*g35);
21244  g112 = -pow(alpha, g15*g35);
21245  g113 = g55 + g86;
21246  g114 = -g100 - g37;
21247  g115 = -g101 - g38;
21248  g116 = -g102 - g40;
21249  g117 = -g103 - g41;
21250  g118 = -g104 - g42;
21251  g119 = -g105 - g43;
21252  g120 = -g106 - g44;
21253  g121 = -g107 - g45;
21254  g122 = -g108 - g46;
21255  g123 = -g109 - g47;
21256  g124 = -g110 - g48;
21257  g125 = -g111 - g49;
21258  g126 = -g112 - g50;
21259  g127 = pow(alpha, g1*g35) + g69;
21260  g128 = g55 + g86;
21261  g129 = pow(alpha, g35*g4) + g70;
21262  g130 = pow(alpha, g35*g5) + g71;
21263  g131 = pow(alpha, g35*g6) + g72;
21264  g132 = pow(alpha, g35*g7) + g73;
21265  g133 = pow(alpha, g35*g8) + g74;
21266  g134 = pow(alpha, g35*g9) + g75;
21267  g135 = pow(alpha, g10*g35) + g76;
21268  g136 = pow(alpha, g11*g35) + g77;
21269  g137 = pow(alpha, g12*g35) + g78;
21270  g138 = pow(alpha, g13*g35) + g79;
21271  g139 = pow(alpha, g14*g35) + g80;
21272  g140 = pow(alpha, g15*g35) + g81;
21273  g141 = xF[11]/g130;
21274  g142 = xF[9]/g140;
21275  g143 = xF[8]/g139;
21276  g144 = xF[1]/g128;
21277  g145 = xF[10]/g129;
21278  g146 = xF[3]/g134;
21279  g147 = xF[7]/g138;
21280  g148 = xF[4]/g135;
21281  g149 = xF[12]/g131;
21282  g150 = xF[13]/g132;
21283  g151 = xF[6]/g137;
21284  g152 = xF[5]/g136;
21285  g153 = xF[2]/g133;
21286  g154 = xF[0]/g127;
21287  g155 = xF[1]/g113;
21288  g156 = xF[0]/g114;
21289  g157 = xF[4]/g121;
21290  g158 = xF[7]/g124;
21291  g159 = xF[2]/g119;
21292  g160 = xF[11]/g116;
21293  g161 = xF[13]/g118;
21294  g162 = xF[3]/g120;
21295  g163 = xF[6]/g123;
21296  g164 = xF[8]/g125;
21297  g165 = xF[12]/g117;
21298  g166 = xF[10]/g115;
21299  g167 = xF[9]/g126;
21300  g168 = xF[5]/g122;
21301  g169 = g61/g123;
21302  g170 = g64/g126;
21303  g171 = g59/g121;
21304  g172 = g62/g124;
21305  g173 = g56/g114;
21306  g174 = g60/g122;
21307  g175 = g67/g117;
21308  g176 = g68/g118;
21309  g177 = g58/g120;
21310  g178 = g54/g113;
21311  g179 = g66/g116;
21312  g180 = g57/g119;
21313  g181 = g65/g115;
21314  g182 = g63/g125;
21315  g183 = g85/g113;
21316  g184 = g87/g114;
21317  g185 = g97/g116;
21318  g186 = g88/g119;
21319  g187 = g89/g120;
21320  g188 = g90/g121;
21321  g189 = g94/g125;
21322  g190 = g95/g126;
21323  g191 = g92/g123;
21324  g192 = g98/g117;
21325  g193 = g99/g118;
21326  g194 = g93/g124;
21327  g195 = g96/g115;
21328  g196 = g91/g122;
21329  g197 = log(g128*g18*g84/g55);
21330  g198 = log(g113*g18*g84/g54);
21331  g199 = log(g128*g19*g52/g86);
21332  g200 = 1.0*g197;
21333  g201 = log(g113*g19*g52/g85);
21334  g202 = 1.0*g199;
21335  g203 = -g141*g200*(g71 + 1) - g141*g202*(pow(alpha, g35*g5) - 1) - g142*g200*(g81 + 1) - g142*g202*(pow(alpha, g15*g35) - 1) - g143*g200*(g80 + 1) - g143*g202*(pow(alpha, g14*g35) - 1) - g144*g200*g55 - g144*g202*g86 - g145*g200*(g70 + 1) - g145*g202*(pow(alpha, g35*g4) - 1) - g146*g200*(g75 + 1) - g146*g202*(pow(alpha, g35*g9) - 1) - g147*g200*(g79 + 1) - g147*g202*(pow(alpha, g13*g35) - 1) - g148*g200*(g76 + 1) - g148*g202*(pow(alpha, g10*g35) - 1) - g149*g200*(g72 + 1) - g149*g202*(pow(alpha, g35*g6) - 1) - g150*g200*(g73 + 1) - g150*g202*(pow(alpha, g35*g7) - 1) - g151*g200*(g78 + 1) - g151*g202*(pow(alpha, g12*g35) - 1) - g152*g200*(g77 + 1) - g152*g202*(pow(alpha, g11*g35) - 1) - g153*g200*(g74 + 1) - g153*g202*(pow(alpha, g35*g8) - 1) - g154*g200*(g69 + 1) - g154*g202*(pow(alpha, g1*g35) - 1) - g82*xF[0] - g82*xF[10] - g82*xF[11] - g82*xF[12] - g82*xF[13] - g82*xF[1] - g82*xF[2] - g82*xF[3] - g82*xF[4] - g82*xF[5] - g82*xF[6] - g82*xF[7] - g82*xF[8] - g82*xF[9];
21336  LpF = xF[0]*(g20 + 1.0)*(g173*g198 + g184*g201 + g51)/(g39*(g20 - 1.0)) + xF[10]*(g21 + 1.0)*(g181*g198 + g195*g201 + g51)/(g39*(g21 - 1.0)) + xF[11]*(g22 + 1.0)*(g179*g198 + g185*g201 + g51)/(g39*(g22 - 1.0)) + xF[12]*(g23 + 1.0)*(g175*g198 + g192*g201 + g51)/(g39*(g23 - 1.0)) + xF[13]*(g24 + 1.0)*(g176*g198 + g193*g201 + g51)/(g39*(g24 - 1.0)) + xF[1]*(g25 + 1.0)*(g178*g198 + g183*g201 + g51)/(g39*(g25 - 1.0)) + xF[2]*(g26 + 1.0)*(g180*g198 + g186*g201 + g51)/(g39*(g26 - 1.0)) + xF[3]*(g27 + 1.0)*(g177*g198 + g187*g201 + g51)/(g39*(g27 - 1.0)) + xF[4]*(g28 + 1.0)*(g171*g198 + g188*g201 + g51)/(g39*(g28 - 1.0)) + xF[5]*(g29 + 1.0)*(g174*g198 + g196*g201 + g51)/(g39*(g29 - 1.0)) + xF[6]*(g30 + 1.0)*(g169*g198 + g191*g201 + g51)/(g39*(g30 - 1.0)) + xF[7]*(g31 + 1.0)*(g172*g198 + g194*g201 + g51)/(g39*(g31 - 1.0)) + xF[8]*(g32 + 1.0)*(g182*g198 + g189*g201 + g51)/(g39*(g32 - 1.0)) + xF[9]*(g33 + 1.0)*(g170*g198 + g190*g201 + g51)/(g39*(g33 - 1.0));
21337  PpF = g52;
21338  TpF = -g17/g3;
21339  SWUpF = g203;
21340  SWUpP = g203*g53;
21341  xP[0] = g156*g53*g87;
21342  xP[1] = g155*g53*g85;
21343  xP[2] = g159*g53*g88;
21344  xP[3] = g162*g53*g89;
21345  xP[4] = g157*g53*g90;
21346  xP[5] = g168*g53*g91;
21347  xP[6] = g163*g53*g92;
21348  xP[7] = g158*g53*g93;
21349  xP[8] = g164*g53*g94;
21350  xP[9] = g167*g53*g95;
21351  xP[10] = g166*g53*g96;
21352  xP[11] = g160*g53*g97;
21353  xP[12] = g165*g53*g98;
21354  xP[13] = g161*g53*g99;
21355  xT[0] = g156*g56*g83;
21356  xT[1] = g155*g54*g83;
21357  xT[2] = g159*g57*g83;
21358  xT[3] = g162*g58*g83;
21359  xT[4] = g157*g59*g83;
21360  xT[5] = g168*g60*g83;
21361  xT[6] = g163*g61*g83;
21362  xT[7] = g158*g62*g83;
21363  xT[8] = g164*g63*g83;
21364  xT[9] = g167*g64*g83;
21365  xT[10] = g166*g65*g83;
21366  xT[11] = g160*g66*g83;
21367  xT[12] = g165*g67*g83;
21368  xT[13] = g161*g68*g83;
21369  break;
21370  case 15:
21371  n0 = -2.00000000000000;
21372  n1 = MW[0] - Mstar;
21373  n2 = log(alpha);
21374  n3 = xPj - xTj;
21375  n4 = xF[0] - xPj;
21376  n5 = MW[10] - Mstar;
21377  n6 = MW[11] - Mstar;
21378  n7 = MW[12] - Mstar;
21379  n8 = MW[13] - Mstar;
21380  n9 = MW[14] - Mstar;
21381  n10 = MW[1] - Mstar;
21382  n11 = MW[2] - Mstar;
21383  n12 = MW[3] - Mstar;
21384  n13 = MW[4] - Mstar;
21385  n14 = MW[5] - Mstar;
21386  n15 = MW[6] - Mstar;
21387  n16 = MW[7] - Mstar;
21388  n17 = MW[8] - Mstar;
21389  n18 = MW[9] - Mstar;
21390  n19 = log(xTj);
21391  n20 = -n1;
21392  n21 = -2;
21393  n22 = xF[0]*xPj;
21394  n23 = -Mstar;
21395  n24 = -NP0*n0;
21396  n25 = -xTj;
21397  n26 = pow(n1, -n0);
21398  n27 = pow(n2, -n0);
21399  n28 = pow(n5, -n0);
21400  n29 = pow(n6, -n0);
21401  n30 = pow(n7, -n0);
21402  n31 = pow(n8, -n0);
21403  n32 = pow(n9, -n0);
21404  n33 = pow(n10, -n0);
21405  n34 = pow(n11, -n0);
21406  n35 = pow(n12, -n0);
21407  n36 = pow(n13, -n0);
21408  n37 = pow(n14, -n0);
21409  n38 = pow(n15, -n0);
21410  n39 = pow(n16, -n0);
21411  n40 = pow(n17, -n0);
21412  n41 = pow(n18, -n0);
21413  n42 = Mstar*n2;
21414  n43 = -n0*n2;
21415  n44 = pow(alpha, NP0*n1);
21416  n45 = n22 + n25*xF[0];
21417  n46 = n22 + n25*xPj;
21418  n47 = pow(alpha, NP0*n5);
21419  n48 = pow(alpha, NP0*n6);
21420  n49 = pow(alpha, NP0*n7);
21421  n50 = pow(alpha, NP0*n8);
21422  n51 = pow(alpha, NP0*n9);
21423  n52 = pow(alpha, NP0*n10);
21424  n53 = pow(alpha, NP0*n11);
21425  n54 = pow(alpha, NP0*n12);
21426  n55 = pow(alpha, NP0*n13);
21427  n56 = pow(alpha, NP0*n14);
21428  n57 = pow(alpha, NP0*n15);
21429  n58 = pow(alpha, NP0*n16);
21430  n59 = pow(alpha, NP0*n17);
21431  n60 = pow(alpha, NP0*n18);
21432  n61 = -MW[0]*n2;
21433  n62 = n3/n4;
21434  n63 = n14*n2;
21435  n64 = n10*n2;
21436  n65 = n11*n2;
21437  n66 = n18*n2;
21438  n67 = n1*n2;
21439  n68 = n16*n2;
21440  n69 = -n44 + 1;
21441  n70 = -n47 + 1;
21442  n71 = pow(alpha, NP0*n0*n20);
21443  n72 = pow(n46, -n0);
21444  n73 = -n48 + 1;
21445  n74 = -n49 + 1;
21446  n75 = -n50 + 1;
21447  n76 = -n51 + 1;
21448  n77 = -n52 + 1;
21449  n78 = -n53 + 1;
21450  n79 = -n54 + 1;
21451  n80 = -n55 + 1;
21452  n81 = -n56 + 1;
21453  n82 = -n57 + 1;
21454  n83 = -n58 + 1;
21455  n84 = -n59 + 1;
21456  n85 = -n60 + 1;
21457  n86 = -n79;
21458  n87 = -n73;
21459  n88 = -n82;
21460  n89 = -n80;
21461  n90 = -n44;
21462  n91 = -n49;
21463  n92 = -n50;
21464  n93 = -n51;
21465  n94 = -n53;
21466  n95 = -n55;
21467  n96 = -n56;
21468  n97 = -n57;
21469  n98 = n44*xF[0];
21470  n99 = n60*xF[9];
21471  n100 = 1.0/n67;
21472  n101 = n15*n57;
21473  n102 = n12*n54;
21474  n103 = n27*n37;
21475  n104 = n13*n55;
21476  n105 = n76*xF[14];
21477  n106 = n26*n27;
21478  n107 = n1*n44;
21479  n108 = n27*n39;
21480  n109 = n50*n8;
21481  n110 = n78*xF[2];
21482  n111 = n69*xF[0];
21483  n112 = n51*n9;
21484  n113 = n27*n34;
21485  n114 = n27*n30;
21486  n115 = n27*n33;
21487  n116 = n47*n5;
21488  n117 = n17*n59;
21489  n118 = n10*n52;
21490  n119 = n81*xF[5];
21491  n120 = n49*n7;
21492  n121 = n16*n58;
21493  n122 = n27*n32;
21494  n123 = log((-1.0 + xPj/xF[0])/n3);
21495  n124 = -n74*xF[12];
21496  n125 = -n85*xF[9];
21497  n126 = n116*xF[10];
21498  n127 = -n70*xF[10];
21499  n128 = -n75*xF[13];
21500  n129 = -n84*xF[8];
21501  n130 = -n83*xF[7];
21502  n131 = n2*n48*n6;
21503  n132 = n117*n2;
21504  n133 = n46/n45;
21505  n134 = n120*n2*xF[12];
21506  n135 = n27*n31*n50;
21507  n136 = n27*n29*n48;
21508  n137 = n27*n40*n59;
21509  n138 = n27*n36*n55;
21510  n139 = n27*n28*n47;
21511  n140 = n27*n38*n57;
21512  n141 = n27*n35*n54;
21513  n142 = n133*n90 + 1;
21514  n143 = n123 + n19 + n42 + n61;
21515  n144 = n133/n142;
21516  n145 = n144*n27;
21517  n146 = n144*n2*n44;
21518  n147 = n100*(n143 - log(n142)) + 1;
21519  n148 = pow(alpha, n1*n147);
21520  n149 = pow(alpha, n147*n5);
21521  n150 = pow(alpha, n147*n6);
21522  n151 = pow(alpha, n147*n7);
21523  n152 = pow(alpha, n147*n8);
21524  n153 = pow(alpha, n147*n9);
21525  n154 = pow(alpha, n10*n147);
21526  n155 = pow(alpha, n11*n147);
21527  n156 = pow(alpha, n12*n147);
21528  n157 = pow(alpha, n13*n147);
21529  n158 = pow(alpha, n14*n147);
21530  n159 = pow(alpha, n147*n15);
21531  n160 = pow(alpha, n147*n16);
21532  n161 = pow(alpha, n147*n17);
21533  n162 = pow(alpha, n147*n18);
21534  n163 = n7/n151;
21535  n164 = n13/n157;
21536  n165 = n16/n160;
21537  n166 = n9/n153;
21538  n167 = n18/n162;
21539  n168 = n8/n152;
21540  n169 = n12/n156;
21541  n170 = n15/n159;
21542  n171 = n17/n161;
21543  n172 = n6/n150;
21544  n173 = n10/n154;
21545  n174 = n11/n155;
21546  n175 = n5/n149;
21547  n176 = n14/n158;
21548  n177 = n44/n158;
21549  n178 = pow(alpha, n147*n20) + n69 - 1;
21550  n179 = n70 - 1 + 1.0/n149;
21551  n180 = n73 - 1 + 1.0/n150;
21552  n181 = n74 - 1 + 1.0/n151;
21553  n182 = n75 - 1 + 1.0/n152;
21554  n183 = n76 - 1 + 1.0/n153;
21555  n184 = n77 - 1 + 1.0/n154;
21556  n185 = n78 - 1 + 1.0/n155;
21557  n186 = n79 - 1 + 1.0/n156;
21558  n187 = n80 - 1 + 1.0/n157;
21559  n188 = n81 - 1 + 1.0/n158;
21560  n189 = n82 - 1 + 1.0/n159;
21561  n190 = n83 - 1 + 1.0/n160;
21562  n191 = n84 - 1 + 1.0/n161;
21563  n192 = n85 - 1 + 1.0/n162;
21564  n193 = pow(n178, 3);
21565  n194 = pow(n179, 3);
21566  n195 = pow(n180, 3);
21567  n196 = pow(n181, 3);
21568  n197 = pow(n182, 3);
21569  n198 = pow(n183, 3);
21570  n199 = pow(n184, 3);
21571  n200 = pow(n185, 3);
21572  n201 = pow(n186, 3);
21573  n202 = pow(n187, 3);
21574  n203 = pow(n188, 3);
21575  n204 = pow(n189, 3);
21576  n205 = pow(n190, 3);
21577  n206 = pow(n191, 3);
21578  n207 = pow(n192, 3);
21579  n208 = xF[11]/n180;
21580  n209 = xF[13]/n182;
21581  n210 = xF[4]/n187;
21582  n211 = xF[3]/n186;
21583  n212 = xF[8]/n191;
21584  n213 = xF[6]/n189;
21585  n214 = xF[10]/n179;
21586  n215 = pow(n186, n21)*xF[3];
21587  n216 = xF[6]/n204;
21588  n217 = n2/n179;
21589  n218 = pow(n187, n21)*xF[4];
21590  n219 = -1/n178;
21591  n220 = xF[4]/n202;
21592  n221 = n2*xF[14]/n183;
21593  n222 = n56*xF[5]/n188;
21594  n223 = n52*xF[1]/n184;
21595  n224 = n58*xF[7]/n190;
21596  n225 = n53*xF[2]/n185;
21597  n226 = n49*xF[12]/n181;
21598  n227 = n51*xF[14]/n183;
21599  n228 = n27*n41/n192;
21600  n229 = n77/n199;
21601  n230 = pow(n178, n21)*n69;
21602  n231 = -n119*pow(n188, n21);
21603  n232 = n130/n205;
21604  n233 = -pow(n184, n21)*n77*xF[1];
21605  n234 = n62*n98/(n100*n178);
21606  n235 = n2*n20*n62*n98/n178;
21607  n236 = n106*n62*n98/n178;
21608  n237 = n139*n214*n62;
21609  n238 = n136*n208*n62;
21610  n239 = n114*n226*n62;
21611  n240 = n135*n209*n62;
21612  n241 = n122*n227*n62;
21613  n242 = n115*n223*n62;
21614  n243 = n113*n225*n62;
21615  n244 = n141*n211*n62;
21616  n245 = n138*n210*n62;
21617  n246 = n103*n222*n62;
21618  n247 = n140*n213*n62;
21619  n248 = n108*n224*n62;
21620  n249 = n137*n212*n62;
21621  n250 = n228*n62*n99;
21622  n251 = 0.5*n236;
21623  n252 = n144/n148 + 1;
21624  n253 = n144*n44/(n100*n148) + n44/n100;
21625  n254 = n116*n2 + n146*n175;
21626  n255 = n131 + n146*n172;
21627  n256 = n120*n2 + n146*n163;
21628  n257 = n109*n2 + n146*n168;
21629  n258 = n112*n2 + n146*n166;
21630  n259 = n144*n44*n64/n154 + n52*n64;
21631  n260 = n144*n44*n65/n155 + n53*n65;
21632  n261 = n102*n2 + n146*n169;
21633  n262 = n104*n2 + n146*n164;
21634  n263 = n144*n177*n63 + n56*n63;
21635  n264 = n101*n2 + n146*n170;
21636  n265 = n144*n44*n68/n160 + n58*n68;
21637  n266 = n132 + n146*n171;
21638  n267 = n144*n44*n66/n162 + n60*n66;
21639  n268 = pow(n253, -n0);
21640  n269 = pow(n254, -n0);
21641  n270 = pow(n255, -n0);
21642  n271 = pow(n256, -n0);
21643  n272 = pow(n257, -n0);
21644  n273 = pow(n258, -n0);
21645  n274 = pow(n259, -n0);
21646  n275 = pow(n260, -n0);
21647  n276 = pow(n261, -n0);
21648  n277 = pow(n262, -n0);
21649  n278 = pow(n263, -n0);
21650  n279 = pow(n264, -n0);
21651  n280 = pow(n265, -n0);
21652  n281 = pow(n266, -n0);
21653  n282 = pow(n267, -n0);
21654  n283 = n255*xF[11];
21655  n284 = n259*xF[1];
21656  n285 = n0*n146*n20/n148 + n0*n2*n20*n44;
21657  n286 = n274*xF[1];
21658  n287 = n106*n144*n90/n148 + n106*n90;
21659  n288 = pow(n181, n21)*n256;
21660  n289 = pow(n178, n21)*n253;
21661  n290 = pow(n192, n21)*n267;
21662  n291 = pow(n179, n21)*n254;
21663  n292 = pow(n182, n21)*n257;
21664  n293 = pow(n183, n21)*n258;
21665  n294 = pow(n190, n21)*n265;
21666  n295 = pow(n191, n21)*n266;
21667  n296 = pow(n189, n21)*n264*xF[6];
21668  n297 = n273/n198;
21669  n298 = n268/n193;
21670  n299 = n275/n200;
21671  n300 = n278/n203;
21672  n301 = pow(n178, n21)*n287;
21673  n302 = -n111*n289*n62;
21674  n303 = n0*pow(n178, n21)*n2*n20*n62*n98*(pow(alpha, NP0*n1 + n147*n20)*n144/n100 + n44/n100);
21675  n304 = n126*pow(n179, n21)*n43*n62*(pow(alpha, NP0*n1 - n147*n5)*n144*n2*n5 + n116*n2);
21676  n305 = pow(n180, n21)*n43*n48*n6*n62*xF[11]*(pow(alpha, NP0*n1 - n147*n6)*n144*n2*n6 + n131);
21677  n306 = n120*pow(n181, n21)*n43*n62*xF[12]*(pow(alpha, NP0*n1 - n147*n7)*n144*n2*n7 + n120*n2);
21678  n307 = n109*pow(n182, n21)*n43*n62*xF[13]*(pow(alpha, NP0*n1 - n147*n8)*n144*n2*n8 + n109*n2);
21679  n308 = n112*pow(n183, n21)*n43*n62*xF[14]*(pow(alpha, NP0*n1 - n147*n9)*n144*n2*n9 + n112*n2);
21680  n309 = n118*pow(n184, n21)*n43*n62*xF[1]*(pow(alpha, NP0*n1 - n10*n147)*n144*n64 + n52*n64);
21681  n310 = n11*pow(n185, n21)*n43*n53*n62*xF[2]*(pow(alpha, NP0*n1 - n11*n147)*n144*n65 + n53*n65);
21682  n311 = n102*n215*n43*n62*(pow(alpha, NP0*n1 - n12*n147)*n12*n144*n2 + n102*n2);
21683  n312 = n104*n218*n43*n62*(pow(alpha, NP0*n1 - n13*n147)*n13*n144*n2 + n104*n2);
21684  n313 = n14*pow(n188, n21)*n43*n56*n62*xF[5]*(pow(alpha, NP0*n1 - n14*n147)*n144*n63 + n56*n63);
21685  n314 = n101*pow(n189, n21)*n43*n62*xF[6]*(pow(alpha, NP0*n1 - n147*n15)*n144*n15*n2 + n101*n2);
21686  n315 = n121*pow(n190, n21)*n43*n62*xF[7]*(pow(alpha, NP0*n1 - n147*n16)*n144*n68 + n58*n68);
21687  n316 = n117*pow(n191, n21)*n43*n62*xF[8]*(pow(alpha, NP0*n1 - n147*n17)*n144*n17*n2 + n132);
21688  n317 = n18*pow(n192, n21)*n43*n62*n99*(pow(alpha, NP0*n1 - n147*n18)*n144*n66 + n60*n66);
21689  n318 = 1.0*n289*n62*n98/n100;
21690  n319 = n111*n301*n62;
21691  n320 = 0.5*n319;
21692  n321 = n234 + n302;
21693  n322 = -n253*n285/n193;
21694  n323 = pow(alpha, n1*n24)*n1*pow(n142, n21)*n175*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24)*pow(n142, n21)*n27*n28*pow(n45, n21)*n72/n149 + n107*n145*n175 + n139;
21695  n324 = pow(alpha, n1*n24)*n1*pow(n142, n21)*n172*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24)*pow(n142, n21)*n27*n29*pow(n45, n21)*n72/n150 + n107*n145*n172 + n136;
21696  n325 = pow(alpha, n1*n24)*n114*pow(n142, n21)*pow(n45, n21)*n72/n151 + pow(alpha, n1*n24)*pow(n142, n21)*n163*n20*n27*pow(n45, n21)*n72 + n114*n91 + n145*n163*n20*n44;
21697  n326 = pow(alpha, n1*n24)*pow(n142, n21)*n168*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24)*pow(n142, n21)*n27*n31*pow(n45, n21)*n72/n152 + n145*n168*n20*n44 + n27*n31*n92;
21698  n327 = pow(alpha, n1*n24)*n122*pow(n142, n21)*pow(n45, n21)*n72/n153 + pow(alpha, n1*n24)*pow(n142, n21)*n166*n20*n27*pow(n45, n21)*n72 + n122*n93 + n145*n166*n20*n44;
21699  n328 = pow(alpha, n1*n24)*n113*pow(n142, n21)*pow(n45, n21)*n72/n155 + pow(alpha, n1*n24)*pow(n142, n21)*n174*n20*n27*pow(n45, n21)*n72 + n113*n94 + n145*n174*n20*n44;
21700  n329 = pow(alpha, n1*n24)*pow(n142, n21)*n164*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24)*pow(n142, n21)*n27*n36*pow(n45, n21)*n72/n157 + n145*n164*n20*n44 + n27*n36*n95;
21701  n330 = pow(alpha, n1*n24)*pow(n142, n21)*n170*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24)*pow(n142, n21)*n27*n38*pow(n45, n21)*n72/n159 + n145*n170*n20*n44 + n27*n38*n97;
21702  n331 = pow(alpha, n1*n24)*n1*pow(n142, n21)*n165*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24)*n108*pow(n142, n21)*pow(n45, n21)*n72/n160 + n107*n145*n165 + n108*n58;
21703  n332 = pow(alpha, n1*n24)*n1*pow(n142, n21)*n171*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24)*pow(n142, n21)*n27*n40*pow(n45, n21)*n72/n161 + n107*n145*n171 + n137;
21704  n333 = pow(alpha, n1*n24)*n1*pow(n142, n21)*n167*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24)*pow(n142, n21)*n27*n41*pow(n45, n21)*n72/n162 + n107*n145*n167 + n27*n41*n60;
21705  n334 = pow(n181, n21)*n62*n74*xF[12]*(pow(alpha, n1*n24 - n147*n7)*n114*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n7)*pow(n142, n21)*n20*n27*pow(n45, n21)*n7*n72 + n114*n91 + n145*n163*n20*n44);
21706  n335 = pow(n182, n21)*n62*n75*xF[13]*(pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n8 + pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n27*n31*pow(n45, n21)*n72 + n145*n168*n20*n44 + n27*n31*n92);
21707  n336 = n105*pow(n183, n21)*n62*(pow(alpha, n1*n24 - n147*n9)*n122*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n9)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n9 + n122*n93 + n145*n166*n20*n44);
21708  n337 = n110*pow(n185, n21)*n62*(pow(alpha, n1*n24 - n11*n147)*n11*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n11*n147)*n113*pow(n142, n21)*pow(n45, n21)*n72 + n113*n94 + n145*n174*n20*n44);
21709  n338 = n218*n62*n80*(pow(alpha, n1*n24 - n13*n147)*n13*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n13*n147)*pow(n142, n21)*n27*n36*pow(n45, n21)*n72 + n145*n164*n20*n44 + n27*n36*n95);
21710  n339 = pow(n189, n21)*n62*n82*xF[6]*(pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n15*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n27*n38*pow(n45, n21)*n72 + n145*n170*n20*n44 + n27*n38*n97);
21711  n340 = n127*pow(n179, n21)*n62*(pow(alpha, n1*n24 - n147*n5)*n1*pow(n142, n21)*n27*pow(n45, n21)*n5*n72 - pow(alpha, n1*n24 - n147*n5)*pow(n142, n21)*n27*n28*pow(n45, n21)*n72 + n107*n145*n175 + n139);
21712  n341 = pow(n180, n21)*n62*n87*xF[11]*(pow(alpha, n1*n24 - n147*n6)*n1*pow(n142, n21)*n27*pow(n45, n21)*n6*n72 - pow(alpha, n1*n24 - n147*n6)*pow(n142, n21)*n27*n29*pow(n45, n21)*n72 + n107*n145*n172 + n136);
21713  n342 = n233*n62*(pow(alpha, n1*n24 - n10*n147)*n1*n10*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n10*n147)*n115*pow(n142, n21)*pow(n45, n21)*n72 + n107*n145*n173 + n115*n52);
21714  n343 = n215*n62*n86*(pow(alpha, n1*n24 - n12*n147)*n1*n12*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n12*n147)*pow(n142, n21)*n27*n35*pow(n45, n21)*n72 + n107*n145*n169 + n141);
21715  n344 = n231*n62*(pow(alpha, n1*n24 - n14*n147)*n1*n14*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n14*n147)*n103*pow(n142, n21)*pow(n45, n21)*n72 + n103*n56 + n107*n145*n176);
21716  n345 = n130*pow(n190, n21)*n62*(pow(alpha, n1*n24 - n147*n16)*n1*pow(n142, n21)*n16*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n16)*n108*pow(n142, n21)*pow(n45, n21)*n72 + n107*n145*n165 + n108*n58);
21717  n346 = n129*pow(n191, n21)*n62*(pow(alpha, n1*n24 - n147*n17)*n1*pow(n142, n21)*n17*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n17)*pow(n142, n21)*n27*n40*pow(n45, n21)*n72 + n107*n145*n171 + n137);
21718  n347 = n125*pow(n192, n21)*n62*(pow(alpha, n1*n24 - n147*n18)*n1*pow(n142, n21)*n18*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n18)*pow(n142, n21)*n27*n41*pow(n45, n21)*n72 + n107*n145*n167 + n27*n41*n60);
21719  n348 = n251 + n318 + n320;
21720  n349 = n101*n2*n213*n62 + n102*n2*n211*n62 + n104*n2*n210*n62 - n105*n293*n62 + n109*n2*n209*n62 - n110*pow(n185, n21)*n260*n62 + n112*n221*n62 + n124*n288*n62 + n125*n290*n62 + n126*n217*n62 + n127*n291*n62 + n128*n292*n62 + n129*n295*n62 + n130*n294*n62 + n131*n208*n62 + n132*n212*n62 + n134*n62/n181 + pow(n180, n21)*n283*n62*n87 + n215*n261*n62*n86 + n218*n262*n62*n89 + n222*n62*n63 + n223*n62*n64 + n224*n62*n68 + n225*n62*n65 + n231*n263*n62 + n233*n259*n62 + n296*n62*n88 + n321 + n62*n66*n99/n192;
21721  n350 = n349*xTj;
21722  n351 = n236 + n237 + n238 + n239 + n240 + n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n317 + n319 + n334 + n335 + n336 + n337 + n338 + n339 + n340 + n341 + n342 + n343 + n344 + n345 + n346 + n347;
21723  n352 = -n105*n258*n62*(n112*n43 + n144*n166*n43*n44)/n198 - n110*n260*n62*(n11*n43*n53 + n144*n174*n43*n44)/n200 + n111*n322*n62 - n119*n263*n62*(n14*n43*n56 + n144*n176*n43*n44)/n203 + n124*n256*n62*(n120*n43 + n144*n163*n43*n44)/n196 + n125*n267*n62*(n144*n167*n43*n44 + n18*n43*n60)/n207 + n127*n254*n62*(n116*n43 + n144*n175*n43*n44)/n194 + n128*n257*n62*(n109*n43 + n144*n168*n43*n44)/n197 + n129*n266*n62*(n117*n43 + n144*n171*n43*n44)/n206 + n216*n264*n62*n88*(n101*n43 + n144*n170*n43*n44) + n220*n262*n62*n89*(n104*n43 + n144*n164*n43*n44) - n229*n284*n62*(n118*n43 + n144*n173*n43*n44) + n232*n265*n62*(n121*n43 + n144*n165*n43*n44) + n351 + n261*n62*n86*xF[3]*(n102*n43 + n144*n169*n43*n44)/n201 + n283*n62*n87*(n144*n172*n43*n44 + n43*n48*n6)/n195;
21724  NP_b = -n235 - n24*(0.5*n111*pow(n178, n21)*n62*(pow(alpha, NP0*n1 - n1*n147)*n106*(-n22 + xPj*xTj)/(n142*n45) + n106*n90) - 1.0*n111*n298*n62 + n251 - 0.5*xTj*(n105*pow(n183, n21)*n62*(pow(alpha, NP0*n1 - n147*n9)*n145*n20*n9 + pow(alpha, n1*n24 - n147*n9)*n122*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n9)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n9 + n122*n93) + n105*n21*n297*n62 + n110*pow(n185, n21)*n62*(pow(alpha, NP0*n1 - n11*n147)*n11*n145*n20 + pow(alpha, n1*n24 - n11*n147)*n11*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n11*n147)*n113*pow(n142, n21)*pow(n45, n21)*n72 + n113*n94) + n110*n21*n299*n62 + n111*pow(n178, n21)*n62*(pow(alpha, NP0*n1 - n1*n147)*n106*(-n22 + xPj*xTj)/(n142*n45) + n106*n90) + n111*n21*n298*n62 + n119*n21*n300*n62 + n125*pow(n192, n21)*n62*(pow(alpha, NP0*n1 - n147*n18)*n1*n145*n18 + pow(alpha, n1*n24 - n147*n18)*n1*pow(n142, n21)*n18*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n18)*pow(n142, n21)*n27*n41*pow(n45, n21)*n72 + n27*n41*n60) + n127*pow(n179, n21)*n62*(pow(alpha, NP0*n1 - n147*n5)*n1*n145*n5 + pow(alpha, n1*n24 - n147*n5)*n1*pow(n142, n21)*n27*pow(n45, n21)*n5*n72 - pow(alpha, n1*n24 - n147*n5)*pow(n142, n21)*n27*n28*pow(n45, n21)*n72 + n139) + n129*pow(n191, n21)*n62*(pow(alpha, NP0*n1 - n147*n17)*n1*n145*n17 + pow(alpha, n1*n24 - n147*n17)*n1*pow(n142, n21)*n17*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n17)*pow(n142, n21)*n27*n40*pow(n45, n21)*n72 + n137) + n130*pow(n190, n21)*n62*(pow(alpha, NP0*n1 - n147*n16)*n1*n145*n16 + pow(alpha, n1*n24 - n147*n16)*n1*pow(n142, n21)*n16*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n16)*n108*pow(n142, n21)*pow(n45, n21)*n72 + n108*n58) + pow(n180, n21)*n62*n87*xF[11]*(pow(alpha, NP0*n1 - n147*n6)*n1*n145*n6 + pow(alpha, n1*n24 - n147*n6)*n1*pow(n142, n21)*n27*pow(n45, n21)*n6*n72 - pow(alpha, n1*n24 - n147*n6)*pow(n142, n21)*n27*n29*pow(n45, n21)*n72 + n136) + pow(n181, n21)*n62*n74*xF[12]*(pow(alpha, NP0*n1 - n147*n7)*n145*n20*n7 + pow(alpha, n1*n24 - n147*n7)*n114*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n7)*pow(n142, n21)*n20*n27*pow(n45, n21)*n7*n72 + n114*n91) + pow(n182, n21)*n62*n75*xF[13]*(pow(alpha, NP0*n1 - n147*n8)*n145*n20*n8 + pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n8 + pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n27*n31*pow(n45, n21)*n72 + n27*n31*n92) + pow(n189, n21)*n62*n82*xF[6]*(pow(alpha, NP0*n1 - n147*n15)*n145*n15*n20 + pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n15*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n27*n38*pow(n45, n21)*n72 + n27*n38*n97) + n21*n216*n279*n62*n82 + n21*n220*n277*n62*n80 + n21*n229*n286*n62 + n215*n62*n86*(pow(alpha, NP0*n1 - n12*n147)*n1*n12*n145 + pow(alpha, n1*n24 - n12*n147)*n1*n12*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n12*n147)*pow(n142, n21)*n27*n35*pow(n45, n21)*n72 + n141) + n218*n62*n80*(pow(alpha, NP0*n1 - n13*n147)*n13*n145*n20 + pow(alpha, n1*n24 - n13*n147)*n13*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n13*n147)*pow(n142, n21)*n27*n36*pow(n45, n21)*n72 + n27*n36*n95) + n231*n62*(pow(alpha, NP0*n1 - n14*n147)*n1*n14*n145 + pow(alpha, n1*n24 - n14*n147)*n1*n14*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n14*n147)*n103*pow(n142, n21)*pow(n45, n21)*n72 + n103*n56) + n233*n62*(pow(alpha, NP0*n1 - n10*n147)*n1*n10*n145 + pow(alpha, n1*n24 - n10*n147)*n1*n10*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n10*n147)*n115*pow(n142, n21)*pow(n45, n21)*n72 + n115*n52) + n236 + n237 + n238 + n239 + n240 + n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n317 + n21*n282*n62*n85*xF[9]/n207 + n21*n281*n62*n84*xF[8]/n206 + n21*n280*n62*n83*xF[7]/n205 + n21*n276*n62*n79*xF[3]/n201 + n21*n272*n62*n75*xF[13]/n197 + n21*n271*n62*n74*xF[12]/n196 + n21*n270*n62*n73*xF[11]/n195 + n21*n269*n62*n70*xF[10]/n194) + 1.0*pow(n178, n21)*n62*n98*(pow(alpha, NP0*n1 - n1*n147)*n144/n100 + n44/n100)/n100) - n62*xTj*(n101*n2*n213 + n102*n2*n211 + n104*n2*n210 - n105*n293 + n109*n2*n209 - n110*pow(n185, n21)*n260 - n111*n289 + n112*n221 + n124*n288 + n125*n290 + n126*n217 + n127*n291 + n128*n292 + n129*n295 + n130*n294 + n131*n208 + n132*n212 + n134/n181 + pow(n180, n21)*n283*n87 + n215*n261*n86 + n218*n262*n89 + n222*n63 + n223*n64 + n224*n68 + n225*n65 + n231*n263 + n233*n259 + n296*n88 + n66*n99/n192 + n98/(n100*n178)) - n230*n252*n62*n98/n100;
21725  NP_2a = -n62*(-pow(alpha, n1*n24)*n0*n106*n111*pow(n252, -n0)/n193 + pow(alpha, n1*n24)*n0*n106*pow(n178, n21)*n252*xF[0] + n106*n111*pow(n178, n21)*n90*(-1 + (-n22 + xPj*xTj)/(n142*n148*n45)) - 1.0*n106*n98/n178 + 1.0*xTj*(n0*pow(n178, n21)*n2*n20*n98*(pow(alpha, NP0*n1 + n147*n20)*n144/n100 + n44/n100) + n101*pow(n189, n21)*n43*xF[6]*(pow(alpha, NP0*n1 - n147*n15)*n144*n15*n2 + n101*n2) + n102*n215*n43*(pow(alpha, NP0*n1 - n12*n147)*n12*n144*n2 + n102*n2) + n103*n222 + n104*n218*n43*(pow(alpha, NP0*n1 - n13*n147)*n13*n144*n2 + n104*n2) + n105*pow(n183, n21)*(pow(alpha, n1*n24 - n147*n9)*n122*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n9)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n9 + n122*n93 + n145*n166*n20*n44) + n105*n21*n297 + n106*n98/n178 + n108*n224 + n109*pow(n182, n21)*n43*xF[13]*(pow(alpha, NP0*n1 - n147*n8)*n144*n2*n8 + n109*n2) + n11*pow(n185, n21)*n43*n53*xF[2]*(pow(alpha, NP0*n1 - n11*n147)*n144*n65 + n53*n65) + n110*pow(n185, n21)*(pow(alpha, n1*n24 - n11*n147)*n11*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n11*n147)*n113*pow(n142, n21)*pow(n45, n21)*n72 + n113*n94 + n145*n174*n20*n44) + n110*n21*n299 + n111*n21*n298 + n111*n301 + n112*pow(n183, n21)*n43*xF[14]*(pow(alpha, NP0*n1 - n147*n9)*n144*n2*n9 + n112*n2) + n113*n225 + n114*n226 + n115*n223 + n117*pow(n191, n21)*n43*xF[8]*(pow(alpha, NP0*n1 - n147*n17)*n144*n17*n2 + n132) + n118*pow(n184, n21)*n43*xF[1]*(pow(alpha, NP0*n1 - n10*n147)*n144*n64 + n52*n64) + n119*n21*n300 + n120*pow(n181, n21)*n43*xF[12]*(pow(alpha, NP0*n1 - n147*n7)*n144*n2*n7 + n120*n2) + n121*pow(n190, n21)*n43*xF[7]*(pow(alpha, NP0*n1 - n147*n16)*n144*n68 + n58*n68) + n122*n227 + n125*pow(n192, n21)*(pow(alpha, n1*n24 - n147*n18)*n1*pow(n142, n21)*n18*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n18)*pow(n142, n21)*n27*n41*pow(n45, n21)*n72 + n107*n145*n167 + n27*n41*n60) + n126*pow(n179, n21)*n43*(pow(alpha, NP0*n1 - n147*n5)*n144*n2*n5 + n116*n2) + n127*pow(n179, n21)*(pow(alpha, n1*n24 - n147*n5)*n1*pow(n142, n21)*n27*pow(n45, n21)*n5*n72 - pow(alpha, n1*n24 - n147*n5)*pow(n142, n21)*n27*n28*pow(n45, n21)*n72 + n107*n145*n175 + n139) + n129*pow(n191, n21)*(pow(alpha, n1*n24 - n147*n17)*n1*pow(n142, n21)*n17*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n17)*pow(n142, n21)*n27*n40*pow(n45, n21)*n72 + n107*n145*n171 + n137) + n130*pow(n190, n21)*(pow(alpha, n1*n24 - n147*n16)*n1*pow(n142, n21)*n16*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n16)*n108*pow(n142, n21)*pow(n45, n21)*n72 + n107*n145*n165 + n108*n58) + n135*n209 + n136*n208 + n137*n212 + n138*n210 + n139*n214 + n14*pow(n188, n21)*n43*n56*xF[5]*(pow(alpha, NP0*n1 - n14*n147)*n144*n63 + n56*n63) + n140*n213 + n141*n211 + n18*pow(n192, n21)*n43*n99*(pow(alpha, NP0*n1 - n147*n18)*n144*n66 + n60*n66) + pow(n180, n21)*n43*n48*n6*xF[11]*(pow(alpha, NP0*n1 - n147*n6)*n144*n2*n6 + n131) + pow(n180, n21)*n87*xF[11]*(pow(alpha, n1*n24 - n147*n6)*n1*pow(n142, n21)*n27*pow(n45, n21)*n6*n72 - pow(alpha, n1*n24 - n147*n6)*pow(n142, n21)*n27*n29*pow(n45, n21)*n72 + n107*n145*n172 + n136) + pow(n181, n21)*n74*xF[12]*(pow(alpha, n1*n24 - n147*n7)*n114*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n7)*pow(n142, n21)*n20*n27*pow(n45, n21)*n7*n72 + n114*n91 + n145*n163*n20*n44) + pow(n182, n21)*n75*xF[13]*(pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n8 + pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n27*n31*pow(n45, n21)*n72 + n145*n168*n20*n44 + n27*n31*n92) + pow(n189, n21)*n82*xF[6]*(pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n15*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n27*n38*pow(n45, n21)*n72 + n145*n170*n20*n44 + n27*n38*n97) + n21*n216*n279*n82 + n21*n220*n277*n80 + n21*n229*n286 + n215*n86*(pow(alpha, n1*n24 - n12*n147)*n1*n12*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n12*n147)*pow(n142, n21)*n27*n35*pow(n45, n21)*n72 + n107*n145*n169 + n141) + n218*n80*(pow(alpha, n1*n24 - n13*n147)*n13*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n13*n147)*pow(n142, n21)*n27*n36*pow(n45, n21)*n72 + n145*n164*n20*n44 + n27*n36*n95) + n228*n99 + n231*(pow(alpha, n1*n24 - n14*n147)*n1*n14*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n14*n147)*n103*pow(n142, n21)*pow(n45, n21)*n72 + n103*n56 + n107*n145*n176) + n233*(pow(alpha, n1*n24 - n10*n147)*n1*n10*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n10*n147)*n115*pow(n142, n21)*pow(n45, n21)*n72 + n107*n145*n173 + n115*n52) + n21*n282*n85*xF[9]/n207 + n21*n281*n84*xF[8]/n206 + n21*n280*n83*xF[7]/n205 + n21*n276*n79*xF[3]/n201 + n21*n272*n75*xF[13]/n197 + n21*n271*n74*xF[12]/n196 + n21*n270*n73*xF[11]/n195 + n21*n269*n70*xF[10]/n194));
21726  NP_sqrt_base = (NP0*(n25*(n101*n2*n213*n62 + n102*n2*n211*n62 + n104*n2*n210*n62 - n105*pow(n183, n21)*n62*(pow(alpha, NP0*n1 - n147*n9)*n144*n2*n9 + n112*n2) + n109*n2*n209*n62 - n110*pow(n185, n21)*n62*(pow(alpha, NP0*n1 - n11*n147)*n144*n65 + n53*n65) - n111*pow(n178, n21)*n62*(pow(alpha, NP0*n1 - n1*n147)*n144/n100 + n44/n100) + n112*n221*n62 + n124*pow(n181, n21)*n62*(pow(alpha, NP0*n1 - n147*n7)*n144*n2*n7 + n120*n2) + n125*pow(n192, n21)*n62*(pow(alpha, NP0*n1 - n147*n18)*n144*n66 + n60*n66) + n126*n217*n62 + n127*pow(n179, n21)*n62*(pow(alpha, NP0*n1 - n147*n5)*n144*n2*n5 + n116*n2) + n128*pow(n182, n21)*n62*(pow(alpha, NP0*n1 - n147*n8)*n144*n2*n8 + n109*n2) + n129*pow(n191, n21)*n62*(pow(alpha, NP0*n1 - n147*n17)*n144*n17*n2 + n132) + n130*pow(n190, n21)*n62*(pow(alpha, NP0*n1 - n147*n16)*n144*n68 + n58*n68) + n131*n208*n62 + n132*n212*n62 + n134*n62/n181 + pow(n180, n21)*n62*n87*xF[11]*(pow(alpha, NP0*n1 - n147*n6)*n144*n2*n6 + n131) + pow(n189, n21)*n62*n88*xF[6]*(pow(alpha, NP0*n1 - n147*n15)*n144*n15*n2 + n101*n2) + n215*n62*n86*(pow(alpha, NP0*n1 - n12*n147)*n12*n144*n2 + n102*n2) + n218*n62*n89*(pow(alpha, NP0*n1 - n13*n147)*n13*n144*n2 + n104*n2) + n222*n62*n63 + n223*n62*n64 + n224*n62*n68 + n225*n62*n65 + n231*n62*(pow(alpha, NP0*n1 - n14*n147)*n144*n63 + n56*n63) + n233*n62*(pow(alpha, NP0*n1 - n10*n147)*n144*n64 + n52*n64) + n234 + n62*n66*n99/n192) + n321) + n111*n62/n178 + xTj*(-n105*n62/n183 - n110*n62/n185 + n111*n219*n62 - n119*n62/n188 + n124*n62/n181 + n125*n62/n192 + n127*n62/n179 + n128*n62/n182 + n129*n62/n191 + n130*n62/n190 + n208*n62*n87 + n210*n62*n89 + n211*n62*n86 + n213*n62*n88 - n62*n77*xF[1]/n184) + pow(NP0, -n0)*(0.5*n111*n253*n285*n62/n193 - 0.5*n236 - 0.5*n319 + 0.5*n352*xTj - 1.0*n289*n62*n98/n100))*(-n0*n236 - n0*n25*(n105*pow(n183, n21)*n62*(pow(alpha, NP0*n1 - n147*n9)*n145*n20*n9 + pow(alpha, n1*n24 - n147*n9)*n122*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n9)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n9 + n122*n93) - n105*n62*(pow(alpha, NP0*n1 - n147*n9)*n144*n2*n9 + n112*n2)*(pow(alpha, NP0*n1 - n147*n9)*n144*n43*n9 + n112*n43)/n198 + n110*pow(n185, n21)*n62*(pow(alpha, NP0*n1 - n11*n147)*n11*n145*n20 + pow(alpha, n1*n24 - n11*n147)*n11*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n11*n147)*n113*pow(n142, n21)*pow(n45, n21)*n72 + n113*n94) - n110*n62*(pow(alpha, NP0*n1 - n11*n147)*n144*n65 + n53*n65)*(pow(alpha, NP0*n1 - n11*n147)*n11*n144*n43 + n11*n43*n53)/n200 + n111*pow(n178, n21)*n62*(pow(alpha, NP0*n1 - n1*n147)*n106*(-n22 + xPj*xTj)/(n142*n45) + n106*n90) - n111*n62*(pow(alpha, NP0*n1 - n1*n147)*n144/n100 + n44/n100)*(pow(alpha, NP0*n1 - n1*n147)*n0*n144*n2*n20 + n0*n2*n20*n44)/n193 - n119*n62*(pow(alpha, NP0*n1 - n14*n147)*n144*n63 + n56*n63)*(pow(alpha, NP0*n1 - n14*n147)*n14*n144*n43 + n14*n43*n56)/n203 + n124*n62*(pow(alpha, NP0*n1 - n147*n7)*n144*n2*n7 + n120*n2)*(pow(alpha, NP0*n1 - n147*n7)*n144*n43*n7 + n120*n43)/n196 + n125*pow(n192, n21)*n62*(pow(alpha, NP0*n1 - n147*n18)*n1*n145*n18 + pow(alpha, n1*n24 - n147*n18)*n1*pow(n142, n21)*n18*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n18)*pow(n142, n21)*n27*n41*pow(n45, n21)*n72 + n27*n41*n60) + n125*n62*(pow(alpha, NP0*n1 - n147*n18)*n144*n66 + n60*n66)*(pow(alpha, NP0*n1 - n147*n18)*n144*n18*n43 + n18*n43*n60)/n207 + n127*pow(n179, n21)*n62*(pow(alpha, NP0*n1 - n147*n5)*n1*n145*n5 + pow(alpha, n1*n24 - n147*n5)*n1*pow(n142, n21)*n27*pow(n45, n21)*n5*n72 - pow(alpha, n1*n24 - n147*n5)*pow(n142, n21)*n27*n28*pow(n45, n21)*n72 + n139) + n127*n62*(pow(alpha, NP0*n1 - n147*n5)*n144*n2*n5 + n116*n2)*(pow(alpha, NP0*n1 - n147*n5)*n144*n43*n5 + n116*n43)/n194 + n128*n62*(pow(alpha, NP0*n1 - n147*n8)*n144*n2*n8 + n109*n2)*(pow(alpha, NP0*n1 - n147*n8)*n144*n43*n8 + n109*n43)/n197 + n129*pow(n191, n21)*n62*(pow(alpha, NP0*n1 - n147*n17)*n1*n145*n17 + pow(alpha, n1*n24 - n147*n17)*n1*pow(n142, n21)*n17*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n17)*pow(n142, n21)*n27*n40*pow(n45, n21)*n72 + n137) + n129*n62*(pow(alpha, NP0*n1 - n147*n17)*n144*n17*n2 + n132)*(pow(alpha, NP0*n1 - n147*n17)*n144*n17*n43 + n117*n43)/n206 + n130*pow(n190, n21)*n62*(pow(alpha, NP0*n1 - n147*n16)*n1*n145*n16 + pow(alpha, n1*n24 - n147*n16)*n1*pow(n142, n21)*n16*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n16)*n108*pow(n142, n21)*pow(n45, n21)*n72 + n108*n58) + pow(n180, n21)*n62*n87*xF[11]*(pow(alpha, NP0*n1 - n147*n6)*n1*n145*n6 + pow(alpha, n1*n24 - n147*n6)*n1*pow(n142, n21)*n27*pow(n45, n21)*n6*n72 - pow(alpha, n1*n24 - n147*n6)*pow(n142, n21)*n27*n29*pow(n45, n21)*n72 + n136) + pow(n181, n21)*n62*n74*xF[12]*(pow(alpha, NP0*n1 - n147*n7)*n145*n20*n7 + pow(alpha, n1*n24 - n147*n7)*n114*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n7)*pow(n142, n21)*n20*n27*pow(n45, n21)*n7*n72 + n114*n91) + pow(n182, n21)*n62*n75*xF[13]*(pow(alpha, NP0*n1 - n147*n8)*n145*n20*n8 + pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n8 + pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n27*n31*pow(n45, n21)*n72 + n27*n31*n92) + pow(n189, n21)*n62*n82*xF[6]*(pow(alpha, NP0*n1 - n147*n15)*n145*n15*n20 + pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n15*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n27*n38*pow(n45, n21)*n72 + n27*n38*n97) + n215*n62*n86*(pow(alpha, NP0*n1 - n12*n147)*n1*n12*n145 + pow(alpha, n1*n24 - n12*n147)*n1*n12*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n12*n147)*pow(n142, n21)*n27*n35*pow(n45, n21)*n72 + n141) + n216*n62*n88*(pow(alpha, NP0*n1 - n147*n15)*n144*n15*n2 + n101*n2)*(pow(alpha, NP0*n1 - n147*n15)*n144*n15*n43 + n101*n43) + n218*n62*n80*(pow(alpha, NP0*n1 - n13*n147)*n13*n145*n20 + pow(alpha, n1*n24 - n13*n147)*n13*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n13*n147)*pow(n142, n21)*n27*n36*pow(n45, n21)*n72 + n27*n36*n95) + n220*n62*n89*(pow(alpha, NP0*n1 - n13*n147)*n13*n144*n2 + n104*n2)*(pow(alpha, NP0*n1 - n13*n147)*n13*n144*n43 + n104*n43) - n229*n62*xF[1]*(pow(alpha, NP0*n1 - n10*n147)*n144*n64 + n52*n64)*(pow(alpha, NP0*n1 - n10*n147)*n10*n144*n43 + n118*n43) + n231*n62*(pow(alpha, NP0*n1 - n14*n147)*n1*n14*n145 + pow(alpha, n1*n24 - n14*n147)*n1*n14*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n14*n147)*n103*pow(n142, n21)*pow(n45, n21)*n72 + n103*n56) + n232*n62*(pow(alpha, NP0*n1 - n147*n16)*n144*n68 + n58*n68)*(pow(alpha, NP0*n1 - n147*n16)*n144*n16*n43 + n121*n43) + n233*n62*(pow(alpha, NP0*n1 - n10*n147)*n1*n10*n145 + pow(alpha, n1*n24 - n10*n147)*n1*n10*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n10*n147)*n115*pow(n142, n21)*pow(n45, n21)*n72 + n115*n52) + n236 + n237 + n238 + n239 + n240 + n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n317 + n62*n86*xF[3]*(pow(alpha, NP0*n1 - n12*n147)*n12*n144*n2 + n102*n2)*(pow(alpha, NP0*n1 - n12*n147)*n12*n144*n43 + n102*n43)/n201 + n62*n87*xF[11]*(pow(alpha, NP0*n1 - n147*n6)*n144*n2*n6 + n131)*(pow(alpha, NP0*n1 - n147*n6)*n144*n43*n6 + n43*n48*n6)/n195) - n0*n319 - 4.0*n111*n298*n62 + 4.0*n289*n62*n98/n100) + pow(-n111*n289*n62 - n235 - n24*(0.5*n111*pow(n178, n21)*n62*(pow(alpha, NP0*n1 - n1*n147)*n106*(-n22 + xPj*xTj)/(n142*n45) + n106*n90) - 0.5*n111*n62*(pow(alpha, NP0*n1 - n1*n147)*n144/n100 + n44/n100)*(pow(alpha, NP0*n1 - n1*n147)*n0*n144*n2*n20 + n0*n2*n20*n44)/n193 + n251 - 0.5*xTj*(n105*pow(n183, n21)*n62*(pow(alpha, NP0*n1 - n147*n9)*n145*n20*n9 + pow(alpha, n1*n24 - n147*n9)*n122*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n9)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n9 + n122*n93) - n105*n62*(pow(alpha, NP0*n1 - n147*n9)*n144*n2*n9 + n112*n2)*(pow(alpha, NP0*n1 - n147*n9)*n144*n43*n9 + n112*n43)/n198 + n110*pow(n185, n21)*n62*(pow(alpha, NP0*n1 - n11*n147)*n11*n145*n20 + pow(alpha, n1*n24 - n11*n147)*n11*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n11*n147)*n113*pow(n142, n21)*pow(n45, n21)*n72 + n113*n94) - n110*n62*(pow(alpha, NP0*n1 - n11*n147)*n144*n65 + n53*n65)*(pow(alpha, NP0*n1 - n11*n147)*n11*n144*n43 + n11*n43*n53)/n200 + n111*pow(n178, n21)*n62*(pow(alpha, NP0*n1 - n1*n147)*n106*(-n22 + xPj*xTj)/(n142*n45) + n106*n90) - n111*n62*(pow(alpha, NP0*n1 - n1*n147)*n144/n100 + n44/n100)*(pow(alpha, NP0*n1 - n1*n147)*n0*n144*n2*n20 + n0*n2*n20*n44)/n193 - n119*n62*(pow(alpha, NP0*n1 - n14*n147)*n144*n63 + n56*n63)*(pow(alpha, NP0*n1 - n14*n147)*n14*n144*n43 + n14*n43*n56)/n203 + n124*n62*(pow(alpha, NP0*n1 - n147*n7)*n144*n2*n7 + n120*n2)*(pow(alpha, NP0*n1 - n147*n7)*n144*n43*n7 + n120*n43)/n196 + n125*pow(n192, n21)*n62*(pow(alpha, NP0*n1 - n147*n18)*n1*n145*n18 + pow(alpha, n1*n24 - n147*n18)*n1*pow(n142, n21)*n18*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n18)*pow(n142, n21)*n27*n41*pow(n45, n21)*n72 + n27*n41*n60) + n125*n62*(pow(alpha, NP0*n1 - n147*n18)*n144*n66 + n60*n66)*(pow(alpha, NP0*n1 - n147*n18)*n144*n18*n43 + n18*n43*n60)/n207 + n127*pow(n179, n21)*n62*(pow(alpha, NP0*n1 - n147*n5)*n1*n145*n5 + pow(alpha, n1*n24 - n147*n5)*n1*pow(n142, n21)*n27*pow(n45, n21)*n5*n72 - pow(alpha, n1*n24 - n147*n5)*pow(n142, n21)*n27*n28*pow(n45, n21)*n72 + n139) + n127*n62*(pow(alpha, NP0*n1 - n147*n5)*n144*n2*n5 + n116*n2)*(pow(alpha, NP0*n1 - n147*n5)*n144*n43*n5 + n116*n43)/n194 + n128*n62*(pow(alpha, NP0*n1 - n147*n8)*n144*n2*n8 + n109*n2)*(pow(alpha, NP0*n1 - n147*n8)*n144*n43*n8 + n109*n43)/n197 + n129*pow(n191, n21)*n62*(pow(alpha, NP0*n1 - n147*n17)*n1*n145*n17 + pow(alpha, n1*n24 - n147*n17)*n1*pow(n142, n21)*n17*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n17)*pow(n142, n21)*n27*n40*pow(n45, n21)*n72 + n137) + n129*n62*(pow(alpha, NP0*n1 - n147*n17)*n144*n17*n2 + n132)*(pow(alpha, NP0*n1 - n147*n17)*n144*n17*n43 + n117*n43)/n206 + n130*pow(n190, n21)*n62*(pow(alpha, NP0*n1 - n147*n16)*n1*n145*n16 + pow(alpha, n1*n24 - n147*n16)*n1*pow(n142, n21)*n16*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n147*n16)*n108*pow(n142, n21)*pow(n45, n21)*n72 + n108*n58) + pow(n180, n21)*n62*n87*xF[11]*(pow(alpha, NP0*n1 - n147*n6)*n1*n145*n6 + pow(alpha, n1*n24 - n147*n6)*n1*pow(n142, n21)*n27*pow(n45, n21)*n6*n72 - pow(alpha, n1*n24 - n147*n6)*pow(n142, n21)*n27*n29*pow(n45, n21)*n72 + n136) + pow(n181, n21)*n62*n74*xF[12]*(pow(alpha, NP0*n1 - n147*n7)*n145*n20*n7 + pow(alpha, n1*n24 - n147*n7)*n114*pow(n142, n21)*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n7)*pow(n142, n21)*n20*n27*pow(n45, n21)*n7*n72 + n114*n91) + pow(n182, n21)*n62*n75*xF[13]*(pow(alpha, NP0*n1 - n147*n8)*n145*n20*n8 + pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n20*n27*pow(n45, n21)*n72*n8 + pow(alpha, n1*n24 - n147*n8)*pow(n142, n21)*n27*n31*pow(n45, n21)*n72 + n27*n31*n92) + pow(n189, n21)*n62*n82*xF[6]*(pow(alpha, NP0*n1 - n147*n15)*n145*n15*n20 + pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n15*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n147*n15)*pow(n142, n21)*n27*n38*pow(n45, n21)*n72 + n27*n38*n97) + n215*n62*n86*(pow(alpha, NP0*n1 - n12*n147)*n1*n12*n145 + pow(alpha, n1*n24 - n12*n147)*n1*n12*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n12*n147)*pow(n142, n21)*n27*n35*pow(n45, n21)*n72 + n141) + n216*n62*n88*(pow(alpha, NP0*n1 - n147*n15)*n144*n15*n2 + n101*n2)*(pow(alpha, NP0*n1 - n147*n15)*n144*n15*n43 + n101*n43) + n218*n62*n80*(pow(alpha, NP0*n1 - n13*n147)*n13*n145*n20 + pow(alpha, n1*n24 - n13*n147)*n13*pow(n142, n21)*n20*n27*pow(n45, n21)*n72 + pow(alpha, n1*n24 - n13*n147)*pow(n142, n21)*n27*n36*pow(n45, n21)*n72 + n27*n36*n95) + n220*n62*n89*(pow(alpha, NP0*n1 - n13*n147)*n13*n144*n2 + n104*n2)*(pow(alpha, NP0*n1 - n13*n147)*n13*n144*n43 + n104*n43) - n229*n62*xF[1]*(pow(alpha, NP0*n1 - n10*n147)*n144*n64 + n52*n64)*(pow(alpha, NP0*n1 - n10*n147)*n10*n144*n43 + n118*n43) + n231*n62*(pow(alpha, NP0*n1 - n14*n147)*n1*n14*n145 + pow(alpha, n1*n24 - n14*n147)*n1*n14*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n14*n147)*n103*pow(n142, n21)*pow(n45, n21)*n72 + n103*n56) + n232*n62*(pow(alpha, NP0*n1 - n147*n16)*n144*n68 + n58*n68)*(pow(alpha, NP0*n1 - n147*n16)*n144*n16*n43 + n121*n43) + n233*n62*(pow(alpha, NP0*n1 - n10*n147)*n1*n10*n145 + pow(alpha, n1*n24 - n10*n147)*n1*n10*pow(n142, n21)*n27*pow(n45, n21)*n72 - pow(alpha, n1*n24 - n10*n147)*n115*pow(n142, n21)*pow(n45, n21)*n72 + n115*n52) + n236 + n237 + n238 + n239 + n240 + n241 + n242 + n243 + n244 + n245 + n246 + n247 + n248 + n249 + n250 + n303 + n304 + n305 + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n317 + n62*n86*xF[3]*(pow(alpha, NP0*n1 - n12*n147)*n12*n144*n2 + n102*n2)*(pow(alpha, NP0*n1 - n12*n147)*n12*n144*n43 + n102*n43)/n201 + n62*n87*xF[11]*(pow(alpha, NP0*n1 - n147*n6)*n144*n2*n6 + n131)*(pow(alpha, NP0*n1 - n147*n6)*n144*n43*n6 + n43*n48*n6)/n195) + 1.0*pow(n178, n21)*n62*n98*(pow(alpha, NP0*n1 - n1*n147)*n144/n100 + n44/n100)/n100) - n350, -n0);
21727  NP_sqrt_base = fabs(NP_sqrt_base);
21728  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
21729  NT1 = n100*(n143 - log(-pow(alpha, NP1*n1)*n133 + 1));
21730  g0 = MW[1] - Mstar;
21731  g1 = MW[0] - Mstar;
21732  g2 = NT1 + 1;
21733  g3 = xPj - xTj;
21734  g4 = MW[10] - Mstar;
21735  g5 = MW[11] - Mstar;
21736  g6 = MW[12] - Mstar;
21737  g7 = MW[13] - Mstar;
21738  g8 = MW[14] - Mstar;
21739  g9 = MW[2] - Mstar;
21740  g10 = MW[3] - Mstar;
21741  g11 = MW[4] - Mstar;
21742  g12 = MW[5] - Mstar;
21743  g13 = MW[6] - Mstar;
21744  g14 = MW[7] - Mstar;
21745  g15 = MW[8] - Mstar;
21746  g16 = MW[9] - Mstar;
21747  g17 = xF[0] - xTj;
21748  g18 = xF[0] - xPj;
21749  g19 = -xTj;
21750  g20 = xPj/xF[1];
21751  g21 = pow(alpha, -g1);
21752  g22 = pow(alpha, -g4);
21753  g23 = pow(alpha, -g5);
21754  g24 = pow(alpha, -g6);
21755  g25 = pow(alpha, -g7);
21756  g26 = pow(alpha, -g8);
21757  g27 = pow(alpha, -g0);
21758  g28 = pow(alpha, -g9);
21759  g29 = pow(alpha, -g10);
21760  g30 = pow(alpha, -g11);
21761  g31 = pow(alpha, -g12);
21762  g32 = pow(alpha, -g13);
21763  g33 = pow(alpha, -g14);
21764  g34 = pow(alpha, -g15);
21765  g35 = pow(alpha, -g16);
21766  g36 = log(xF[0]/xF[1]);
21767  g37 = -g2;
21768  g38 = pow(alpha, NP1*g0);
21769  g39 = pow(alpha, NP1*g1);
21770  g40 = pow(alpha, NP1*g4);
21771  g41 = log(g21);
21772  g42 = pow(alpha, NP1*g5);
21773  g43 = pow(alpha, NP1*g6);
21774  g44 = pow(alpha, NP1*g7);
21775  g45 = pow(alpha, NP1*g8);
21776  g46 = pow(alpha, NP1*g9);
21777  g47 = pow(alpha, NP1*g10);
21778  g48 = pow(alpha, NP1*g11);
21779  g49 = pow(alpha, NP1*g12);
21780  g50 = pow(alpha, NP1*g13);
21781  g51 = pow(alpha, NP1*g14);
21782  g52 = pow(alpha, NP1*g15);
21783  g53 = pow(alpha, NP1*g16);
21784  g54 = -g36;
21785  g55 = g17/g3;
21786  g56 = g3/g17;
21787  g57 = -g38 + 1;
21788  g58 = -g38 + 1;
21789  g59 = -g39 + 1;
21790  g60 = -g46 + 1;
21791  g61 = -g47 + 1;
21792  g62 = -g48 + 1;
21793  g63 = -g49 + 1;
21794  g64 = -g50 + 1;
21795  g65 = -g51 + 1;
21796  g66 = -g52 + 1;
21797  g67 = -g53 + 1;
21798  g68 = -g40 + 1;
21799  g69 = -g42 + 1;
21800  g70 = -g43 + 1;
21801  g71 = -g44 + 1;
21802  g72 = -g45 + 1;
21803  g73 = -g39;
21804  g74 = -g40;
21805  g75 = -g42;
21806  g76 = -g43;
21807  g77 = -g44;
21808  g78 = -g45;
21809  g79 = -g46;
21810  g80 = -g47;
21811  g81 = -g48;
21812  g82 = -g49;
21813  g83 = -g50;
21814  g84 = -g51;
21815  g85 = -g52;
21816  g86 = -g53;
21817  g87 = -1.0*g36;
21818  g88 = -g3/g18;
21819  g89 = g18/(g3*xF[1]);
21820  g90 = pow(alpha, g0*g37) - 1;
21821  g91 = pow(alpha, g0*g37) - 1;
21822  g92 = pow(alpha, g1*g37) - 1;
21823  g93 = pow(alpha, g37*g9) - 1;
21824  g94 = pow(alpha, g10*g37) - 1;
21825  g95 = pow(alpha, g11*g37) - 1;
21826  g96 = pow(alpha, g12*g37) - 1;
21827  g97 = pow(alpha, g13*g37) - 1;
21828  g98 = pow(alpha, g14*g37) - 1;
21829  g99 = pow(alpha, g15*g37) - 1;
21830  g100 = pow(alpha, g16*g37) - 1;
21831  g101 = pow(alpha, g37*g4) - 1;
21832  g102 = pow(alpha, g37*g5) - 1;
21833  g103 = pow(alpha, g37*g6) - 1;
21834  g104 = pow(alpha, g37*g7) - 1;
21835  g105 = pow(alpha, g37*g8) - 1;
21836  g106 = -pow(alpha, g1*g37);
21837  g107 = -pow(alpha, g37*g4);
21838  g108 = -pow(alpha, g37*g5);
21839  g109 = -pow(alpha, g37*g6);
21840  g110 = -pow(alpha, g37*g7);
21841  g111 = -pow(alpha, g37*g8);
21842  g112 = -pow(alpha, g37*g9);
21843  g113 = -pow(alpha, g10*g37);
21844  g114 = -pow(alpha, g11*g37);
21845  g115 = -pow(alpha, g12*g37);
21846  g116 = -pow(alpha, g13*g37);
21847  g117 = -pow(alpha, g14*g37);
21848  g118 = -pow(alpha, g15*g37);
21849  g119 = -pow(alpha, g16*g37);
21850  g120 = g58 + g91;
21851  g121 = -g106 - g39;
21852  g122 = -g107 - g40;
21853  g123 = -g108 - g42;
21854  g124 = -g109 - g43;
21855  g125 = -g110 - g44;
21856  g126 = -g111 - g45;
21857  g127 = -g112 - g46;
21858  g128 = -g113 - g47;
21859  g129 = -g114 - g48;
21860  g130 = -g115 - g49;
21861  g131 = -g116 - g50;
21862  g132 = -g117 - g51;
21863  g133 = -g118 - g52;
21864  g134 = -g119 - g53;
21865  g135 = pow(alpha, g1*g37) + g73;
21866  g136 = g58 + g91;
21867  g137 = pow(alpha, g37*g4) + g74;
21868  g138 = pow(alpha, g37*g5) + g75;
21869  g139 = pow(alpha, g37*g6) + g76;
21870  g140 = pow(alpha, g37*g7) + g77;
21871  g141 = pow(alpha, g37*g8) + g78;
21872  g142 = pow(alpha, g37*g9) + g79;
21873  g143 = pow(alpha, g10*g37) + g80;
21874  g144 = pow(alpha, g11*g37) + g81;
21875  g145 = pow(alpha, g12*g37) + g82;
21876  g146 = pow(alpha, g13*g37) + g83;
21877  g147 = pow(alpha, g14*g37) + g84;
21878  g148 = pow(alpha, g15*g37) + g85;
21879  g149 = pow(alpha, g16*g37) + g86;
21880  g150 = xF[11]/g138;
21881  g151 = xF[9]/g149;
21882  g152 = xF[8]/g148;
21883  g153 = xF[1]/g136;
21884  g154 = xF[10]/g137;
21885  g155 = xF[3]/g143;
21886  g156 = xF[7]/g147;
21887  g157 = xF[4]/g144;
21888  g158 = xF[12]/g139;
21889  g159 = xF[13]/g140;
21890  g160 = xF[6]/g146;
21891  g161 = xF[14]/g141;
21892  g162 = xF[5]/g145;
21893  g163 = xF[2]/g142;
21894  g164 = xF[0]/g135;
21895  g165 = xF[1]/g120;
21896  g166 = xF[0]/g121;
21897  g167 = xF[4]/g129;
21898  g168 = xF[7]/g132;
21899  g169 = xF[2]/g127;
21900  g170 = xF[11]/g123;
21901  g171 = xF[13]/g125;
21902  g172 = xF[3]/g128;
21903  g173 = xF[6]/g131;
21904  g174 = xF[14]/g126;
21905  g175 = xF[8]/g133;
21906  g176 = xF[12]/g124;
21907  g177 = xF[10]/g122;
21908  g178 = xF[9]/g134;
21909  g179 = xF[5]/g130;
21910  g180 = g64/g131;
21911  g181 = g67/g134;
21912  g182 = g62/g129;
21913  g183 = g65/g132;
21914  g184 = g59/g121;
21915  g185 = g63/g130;
21916  g186 = g70/g124;
21917  g187 = g71/g125;
21918  g188 = g61/g128;
21919  g189 = g57/g120;
21920  g190 = g69/g123;
21921  g191 = g60/g127;
21922  g192 = g72/g126;
21923  g193 = g68/g122;
21924  g194 = g66/g133;
21925  g195 = g90/g120;
21926  g196 = g92/g121;
21927  g197 = g102/g123;
21928  g198 = g93/g127;
21929  g199 = g94/g128;
21930  g200 = g95/g129;
21931  g201 = g99/g133;
21932  g202 = g100/g134;
21933  g203 = g97/g131;
21934  g204 = g105/g126;
21935  g205 = g103/g124;
21936  g206 = g104/g125;
21937  g207 = g98/g132;
21938  g208 = g101/g122;
21939  g209 = g96/g130;
21940  g210 = log(g136*g19*g89/g58);
21941  g211 = log(g120*g19*g89/g57);
21942  g212 = log(g136*g20*g55/g91);
21943  g213 = 1.0*g210;
21944  g214 = log(g120*g20*g55/g90);
21945  g215 = 1.0*g212;
21946  g216 = -g150*g213*(g75 + 1) - g150*g215*(pow(alpha, g37*g5) - 1) - g151*g213*(g86 + 1) - g151*g215*(pow(alpha, g16*g37) - 1) - g152*g213*(g85 + 1) - g152*g215*(pow(alpha, g15*g37) - 1) - g153*g213*g58 - g153*g215*g91 - g154*g213*(g74 + 1) - g154*g215*(pow(alpha, g37*g4) - 1) - g155*g213*(g80 + 1) - g155*g215*(pow(alpha, g10*g37) - 1) - g156*g213*(g84 + 1) - g156*g215*(pow(alpha, g14*g37) - 1) - g157*g213*(g81 + 1) - g157*g215*(pow(alpha, g11*g37) - 1) - g158*g213*(g76 + 1) - g158*g215*(pow(alpha, g37*g6) - 1) - g159*g213*(g77 + 1) - g159*g215*(pow(alpha, g37*g7) - 1) - g160*g213*(g83 + 1) - g160*g215*(pow(alpha, g13*g37) - 1) - g161*g213*(g78 + 1) - g161*g215*(pow(alpha, g37*g8) - 1) - g162*g213*(g82 + 1) - g162*g215*(pow(alpha, g12*g37) - 1) - g163*g213*(g79 + 1) - g163*g215*(pow(alpha, g37*g9) - 1) - g164*g213*(g73 + 1) - g164*g215*(pow(alpha, g1*g37) - 1) - g87*xF[0] - g87*xF[10] - g87*xF[11] - g87*xF[12] - g87*xF[13] - g87*xF[14] - g87*xF[1] - g87*xF[2] - g87*xF[3] - g87*xF[4] - g87*xF[5] - g87*xF[6] - g87*xF[7] - g87*xF[8] - g87*xF[9];
21947  LpF = xF[0]*(g21 + 1.0)*(g184*g211 + g196*g214 + g54)/(g41*(g21 - 1.0)) + xF[10]*(g22 + 1.0)*(g193*g211 + g208*g214 + g54)/(g41*(g22 - 1.0)) + xF[11]*(g23 + 1.0)*(g190*g211 + g197*g214 + g54)/(g41*(g23 - 1.0)) + xF[12]*(g24 + 1.0)*(g186*g211 + g205*g214 + g54)/(g41*(g24 - 1.0)) + xF[13]*(g25 + 1.0)*(g187*g211 + g206*g214 + g54)/(g41*(g25 - 1.0)) + xF[14]*(g26 + 1.0)*(g192*g211 + g204*g214 + g54)/(g41*(g26 - 1.0)) + xF[1]*(g27 + 1.0)*(g189*g211 + g195*g214 + g54)/(g41*(g27 - 1.0)) + xF[2]*(g28 + 1.0)*(g191*g211 + g198*g214 + g54)/(g41*(g28 - 1.0)) + xF[3]*(g29 + 1.0)*(g188*g211 + g199*g214 + g54)/(g41*(g29 - 1.0)) + xF[4]*(g30 + 1.0)*(g182*g211 + g200*g214 + g54)/(g41*(g30 - 1.0)) + xF[5]*(g31 + 1.0)*(g185*g211 + g209*g214 + g54)/(g41*(g31 - 1.0)) + xF[6]*(g32 + 1.0)*(g180*g211 + g203*g214 + g54)/(g41*(g32 - 1.0)) + xF[7]*(g33 + 1.0)*(g183*g211 + g207*g214 + g54)/(g41*(g33 - 1.0)) + xF[8]*(g34 + 1.0)*(g194*g211 + g201*g214 + g54)/(g41*(g34 - 1.0)) + xF[9]*(g35 + 1.0)*(g181*g211 + g202*g214 + g54)/(g41*(g35 - 1.0));
21948  PpF = g55;
21949  TpF = -g18/g3;
21950  SWUpF = g216;
21951  SWUpP = g216*g56;
21952  xP[0] = g166*g56*g92;
21953  xP[1] = g165*g56*g90;
21954  xP[2] = g169*g56*g93;
21955  xP[3] = g172*g56*g94;
21956  xP[4] = g167*g56*g95;
21957  xP[5] = g179*g56*g96;
21958  xP[6] = g173*g56*g97;
21959  xP[7] = g168*g56*g98;
21960  xP[8] = g175*g56*g99;
21961  xP[9] = g100*g178*g56;
21962  xP[10] = g101*g177*g56;
21963  xP[11] = g102*g170*g56;
21964  xP[12] = g103*g176*g56;
21965  xP[13] = g104*g171*g56;
21966  xP[14] = g105*g174*g56;
21967  xT[0] = g166*g59*g88;
21968  xT[1] = g165*g57*g88;
21969  xT[2] = g169*g60*g88;
21970  xT[3] = g172*g61*g88;
21971  xT[4] = g167*g62*g88;
21972  xT[5] = g179*g63*g88;
21973  xT[6] = g173*g64*g88;
21974  xT[7] = g168*g65*g88;
21975  xT[8] = g175*g66*g88;
21976  xT[9] = g178*g67*g88;
21977  xT[10] = g177*g68*g88;
21978  xT[11] = g170*g69*g88;
21979  xT[12] = g176*g70*g88;
21980  xT[13] = g171*g71*g88;
21981  xT[14] = g174*g72*g88;
21982  break;
21983  case 16:
21984  n0 = -2.00000000000000;
21985  n1 = MW[0] - Mstar;
21986  n2 = log(alpha);
21987  n3 = xPj - xTj;
21988  n4 = xF[0] - xPj;
21989  n5 = MW[10] - Mstar;
21990  n6 = MW[11] - Mstar;
21991  n7 = MW[12] - Mstar;
21992  n8 = MW[13] - Mstar;
21993  n9 = MW[14] - Mstar;
21994  n10 = MW[15] - Mstar;
21995  n11 = MW[1] - Mstar;
21996  n12 = MW[2] - Mstar;
21997  n13 = MW[3] - Mstar;
21998  n14 = MW[4] - Mstar;
21999  n15 = MW[5] - Mstar;
22000  n16 = MW[6] - Mstar;
22001  n17 = MW[7] - Mstar;
22002  n18 = MW[8] - Mstar;
22003  n19 = MW[9] - Mstar;
22004  n20 = log(xTj);
22005  n21 = -n1;
22006  n22 = -2;
22007  n23 = xF[0]*xPj;
22008  n24 = -Mstar;
22009  n25 = -xTj;
22010  n26 = -xPj;
22011  n27 = -NP0*n0;
22012  n28 = pow(n1, -n0);
22013  n29 = pow(n2, -n0);
22014  n30 = pow(n5, -n0);
22015  n31 = pow(n6, -n0);
22016  n32 = pow(n7, -n0);
22017  n33 = pow(n8, -n0);
22018  n34 = pow(n9, -n0);
22019  n35 = pow(n10, -n0);
22020  n36 = pow(n11, -n0);
22021  n37 = pow(n12, -n0);
22022  n38 = pow(n13, -n0);
22023  n39 = pow(n14, -n0);
22024  n40 = pow(n15, -n0);
22025  n41 = pow(n16, -n0);
22026  n42 = pow(n17, -n0);
22027  n43 = pow(n18, -n0);
22028  n44 = pow(n19, -n0);
22029  n45 = Mstar*n2;
22030  n46 = -n0*n2;
22031  n47 = NP0*n1;
22032  n48 = -n2;
22033  n49 = pow(alpha, n47);
22034  n50 = n23 + n25*xF[0];
22035  n51 = n23 + n25*xPj;
22036  n52 = pow(alpha, NP0*n5);
22037  n53 = pow(alpha, NP0*n6);
22038  n54 = pow(alpha, NP0*n7);
22039  n55 = pow(alpha, NP0*n8);
22040  n56 = pow(alpha, NP0*n9);
22041  n57 = pow(alpha, NP0*n10);
22042  n58 = pow(alpha, NP0*n11);
22043  n59 = pow(alpha, NP0*n12);
22044  n60 = pow(alpha, NP0*n13);
22045  n61 = pow(alpha, NP0*n14);
22046  n62 = pow(alpha, NP0*n15);
22047  n63 = pow(alpha, NP0*n16);
22048  n64 = pow(alpha, NP0*n17);
22049  n65 = pow(alpha, NP0*n18);
22050  n66 = pow(alpha, NP0*n19);
22051  n67 = MW[0]*n48;
22052  n68 = n3/n4;
22053  n69 = n15*n2;
22054  n70 = n2*n7;
22055  n71 = n11*n2;
22056  n72 = n19*n2;
22057  n73 = n12*n2;
22058  n74 = n10*n2;
22059  n75 = n17*n2;
22060  n76 = -n49 + 1;
22061  n77 = -n52 + 1;
22062  n78 = pow(alpha, NP0*n0*n21);
22063  n79 = pow(n51, -n0);
22064  n80 = -n53 + 1;
22065  n81 = -n54 + 1;
22066  n82 = -n55 + 1;
22067  n83 = -n56 + 1;
22068  n84 = -n57 + 1;
22069  n85 = -n58 + 1;
22070  n86 = -n59 + 1;
22071  n87 = -n60 + 1;
22072  n88 = -n61 + 1;
22073  n89 = -n62 + 1;
22074  n90 = -n63 + 1;
22075  n91 = -n64 + 1;
22076  n92 = -n65 + 1;
22077  n93 = -n66 + 1;
22078  n94 = -n87;
22079  n95 = -n90;
22080  n96 = -n77;
22081  n97 = -n80;
22082  n98 = -n49;
22083  n99 = -n54;
22084  n100 = -n55;
22085  n101 = -n56;
22086  n102 = -n59;
22087  n103 = -n61;
22088  n104 = -n62;
22089  n105 = -n63;
22090  n106 = n1*n29;
22091  n107 = 1/(n1*n2);
22092  n108 = n16*n63;
22093  n109 = n13*n60;
22094  n110 = n1*n49;
22095  n111 = n29*n40;
22096  n112 = n14*n61;
22097  n113 = n56*n9;
22098  n114 = n5*n52;
22099  n115 = n29*n42;
22100  n116 = n55*n8;
22101  n117 = n83*xF[14];
22102  n118 = n86*xF[2];
22103  n119 = n29*n35;
22104  n120 = n29*n37;
22105  n121 = n28*n29;
22106  n122 = n89*xF[5];
22107  n123 = n29*n36;
22108  n124 = n11*n58;
22109  n125 = n17*n64;
22110  n126 = n29*n34;
22111  n127 = n10*n57;
22112  n128 = n18*n65;
22113  n129 = log((-1.0 + xPj/xF[0])/n3);
22114  n130 = -n84*xF[15];
22115  n131 = -n81*xF[12];
22116  n132 = -n93*xF[9];
22117  n133 = n19*n66*xF[9];
22118  n134 = -n82*xF[13];
22119  n135 = n2*n53*n6;
22120  n136 = n128*n2;
22121  n137 = n51/n50;
22122  n138 = n29*n33*n55;
22123  n139 = n29*n31*n53;
22124  n140 = n29*n43*n65;
22125  n141 = n29*n32*n54;
22126  n142 = n29*n30*n52;
22127  n143 = n29*n38*n60;
22128  n144 = n121*n49*xF[0];
22129  n145 = n137*n98 + 1;
22130  n146 = n129 + n20 + n45 + n67;
22131  n147 = n137*n49/n145;
22132  n148 = n107*(n146 - log(n145)) + 1;
22133  n149 = pow(alpha, n1*n148);
22134  n150 = pow(alpha, n148*n5);
22135  n151 = pow(alpha, n148*n6);
22136  n152 = pow(alpha, n148*n7);
22137  n153 = pow(alpha, n148*n8);
22138  n154 = pow(alpha, n148*n9);
22139  n155 = pow(alpha, n10*n148);
22140  n156 = pow(alpha, n11*n148);
22141  n157 = pow(alpha, n12*n148);
22142  n158 = pow(alpha, n13*n148);
22143  n159 = pow(alpha, n14*n148);
22144  n160 = pow(alpha, n148*n15);
22145  n161 = pow(alpha, n148*n16);
22146  n162 = pow(alpha, n148*n17);
22147  n163 = pow(alpha, n148*n18);
22148  n164 = pow(alpha, n148*n19);
22149  n165 = n14/n159;
22150  n166 = n17/n162;
22151  n167 = n8/n153;
22152  n168 = n13/n158;
22153  n169 = n16/n161;
22154  n170 = n9/n154;
22155  n171 = n18/n163;
22156  n172 = n6/n151;
22157  n173 = n11/n156;
22158  n174 = n12/n157;
22159  n175 = -1/n149;
22160  n176 = n10/n155;
22161  n177 = n7/n152;
22162  n178 = n19/n164;
22163  n179 = n5/n150;
22164  n180 = n15/n160;
22165  n181 = pow(alpha, n148*n21) + n76 - 1;
22166  n182 = n77 - 1 + 1.0/n150;
22167  n183 = n80 - 1 + 1.0/n151;
22168  n184 = n81 - 1 + 1.0/n152;
22169  n185 = n82 - 1 + 1.0/n153;
22170  n186 = n83 - 1 + 1.0/n154;
22171  n187 = n84 - 1 + 1.0/n155;
22172  n188 = n85 - 1 + 1.0/n156;
22173  n189 = n86 - 1 + 1.0/n157;
22174  n190 = n87 - 1 + 1.0/n158;
22175  n191 = n88 - 1 + 1.0/n159;
22176  n192 = n89 - 1 + 1.0/n160;
22177  n193 = n90 - 1 + 1.0/n161;
22178  n194 = n91 - 1 + 1.0/n162;
22179  n195 = n92 - 1 + 1.0/n163;
22180  n196 = n93 - 1 + 1.0/n164;
22181  n197 = pow(n181, 3);
22182  n198 = pow(n182, 3);
22183  n199 = pow(n183, 3);
22184  n200 = pow(n184, 3);
22185  n201 = pow(n185, 3);
22186  n202 = pow(n186, 3);
22187  n203 = pow(n187, 3);
22188  n204 = pow(n188, 3);
22189  n205 = pow(n189, 3);
22190  n206 = pow(n190, 3);
22191  n207 = pow(n191, 3);
22192  n208 = pow(n192, 3);
22193  n209 = pow(n193, 3);
22194  n210 = pow(n194, 3);
22195  n211 = pow(n195, 3);
22196  n212 = pow(n196, 3);
22197  n213 = xF[11]/n183;
22198  n214 = xF[12]/n184;
22199  n215 = 0.5/n181;
22200  n216 = xF[10]/n182;
22201  n217 = xF[13]/n185;
22202  n218 = xF[9]/n196;
22203  n219 = xF[8]/n195;
22204  n220 = xF[0]/n181;
22205  n221 = xF[3]/n190;
22206  n222 = pow(n190, n22)*xF[3];
22207  n223 = xF[6]/n209;
22208  n224 = pow(n182, n22)*xF[10];
22209  n225 = xF[10]/n198;
22210  n226 = n2*xF[14]/n186;
22211  n227 = n2*xF[4]/n191;
22212  n228 = n2*n221;
22213  n229 = pow(n181, n22)*n2;
22214  n230 = n2*xF[6]/n193;
22215  n231 = n62*xF[5]/n192;
22216  n232 = n58*xF[1]/n188;
22217  n233 = n64*xF[7]/n194;
22218  n234 = n59*xF[2]/n189;
22219  n235 = n57*xF[15]/n187;
22220  n236 = n56*xF[14]/n186;
22221  n237 = n85/n204;
22222  n238 = -pow(n181, n22)*n76;
22223  n239 = n76*xF[0]/n197;
22224  n240 = pow(n191, n22)*n88*xF[4];
22225  n241 = n88*xF[4]/n207;
22226  n242 = -n122*pow(n192, n22);
22227  n243 = -n91*xF[7]/n210;
22228  n244 = -pow(n188, n22)*n85*xF[1];
22229  n245 = -pow(n194, n22)*n91*xF[7];
22230  n246 = -pow(n195, n22)*n92*xF[8];
22231  n247 = n218*n29*n44*n66;
22232  n248 = n29*n39*n61*xF[4]/n191;
22233  n249 = n29*n41*n63*xF[6]/n193;
22234  n250 = n2*n21*n220*n49*n68;
22235  n251 = n144*n68/n181;
22236  n252 = n142*n216*n68;
22237  n253 = n139*n213*n68;
22238  n254 = n141*n214*n68;
22239  n255 = n138*n217*n68;
22240  n256 = n126*n236*n68;
22241  n257 = n119*n235*n68;
22242  n258 = n123*n232*n68;
22243  n259 = n120*n234*n68;
22244  n260 = n143*n221*n68;
22245  n261 = n248*n68;
22246  n262 = n111*n231*n68;
22247  n263 = n249*n68;
22248  n264 = n115*n233*n68;
22249  n265 = n140*n219*n68;
22250  n266 = n247*n68;
22251  n267 = n144*n215*n68;
22252  n268 = n137/(n145*n149);
22253  n269 = n268 + 1;
22254  n270 = n269*xF[0];
22255  n271 = n110*n2*n268 + n110*n2;
22256  n272 = n114*n2 + n147*n179*n2;
22257  n273 = n135 + n147*n172*n2;
22258  n274 = n147*n70/n152 + n54*n70;
22259  n275 = n116*n2 + n147*n167*n2;
22260  n276 = n113*n2 + n147*n170*n2;
22261  n277 = n147*n74/n155 + n57*n74;
22262  n278 = n147*n71/n156 + n58*n71;
22263  n279 = n147*n73/n157 + n59*n73;
22264  n280 = n109*n2 + n147*n168*n2;
22265  n281 = n112*n2 + n147*n165*n2;
22266  n282 = n147*n69/n160 + n62*n69;
22267  n283 = n108*n2 + n147*n169*n2;
22268  n284 = n147*n75/n162 + n64*n75;
22269  n285 = n136 + n147*n171*n2;
22270  n286 = n147*n72/n164 + n66*n72;
22271  n287 = pow(n271, -n0);
22272  n288 = pow(n272, -n0);
22273  n289 = pow(n273, -n0);
22274  n290 = pow(n274, -n0);
22275  n291 = pow(n275, -n0);
22276  n292 = pow(n276, -n0);
22277  n293 = pow(n277, -n0);
22278  n294 = pow(n278, -n0);
22279  n295 = pow(n279, -n0);
22280  n296 = pow(n280, -n0);
22281  n297 = pow(n281, -n0);
22282  n298 = pow(n282, -n0);
22283  n299 = pow(n283, -n0);
22284  n300 = pow(n284, -n0);
22285  n301 = pow(n285, -n0);
22286  n302 = pow(n286, -n0);
22287  n303 = n271*xF[0];
22288  n304 = n273*xF[11];
22289  n305 = n278*xF[1];
22290  n306 = n285*xF[8];
22291  n307 = n0*n147*n2*n21/n149 + n0*n2*n21*n49;
22292  n308 = n294*xF[1];
22293  n309 = n121*n268*n98 + n121*n98;
22294  n310 = pow(n184, n22)*n274;
22295  n311 = pow(n196, n22)*n286;
22296  n312 = pow(n185, n22)*n275;
22297  n313 = pow(n186, n22)*n276;
22298  n314 = pow(n187, n22)*n277;
22299  n315 = pow(n193, n22)*n283*xF[6];
22300  n316 = n292/n202;
22301  n317 = n295/n205;
22302  n318 = n298/n208;
22303  n319 = pow(n181, n22)*n309*xF[0];
22304  n320 = n301*n92*xF[8]/n211;
22305  n321 = n289*n80*xF[11]/n199;
22306  n322 = pow(n181, n22)*n303*n68*n76;
22307  n323 = n0*n21*n229*n49*n68*xF[0]*(pow(alpha, n148*n21 + n47)*n1*n137*n2/n145 + n110*n2);
22308  n324 = n114*n224*n46*n68*(pow(alpha, -n148*n5 + n47)*n137*n2*n5/n145 + n114*n2);
22309  n325 = pow(n183, n22)*n46*n53*n6*n68*xF[11]*(pow(alpha, -n148*n6 + n47)*n137*n2*n6/n145 + n135);
22310  n326 = pow(n184, n22)*n46*n54*n68*n7*xF[12]*(pow(alpha, -n148*n7 + n47)*n137*n70/n145 + n54*n70);
22311  n327 = n116*pow(n185, n22)*n46*n68*xF[13]*(pow(alpha, -n148*n8 + n47)*n137*n2*n8/n145 + n116*n2);
22312  n328 = n113*pow(n186, n22)*n46*n68*xF[14]*(pow(alpha, -n148*n9 + n47)*n137*n2*n9/n145 + n113*n2);
22313  n329 = n127*pow(n187, n22)*n46*n68*xF[15]*(pow(alpha, -n10*n148 + n47)*n137*n74/n145 + n57*n74);
22314  n330 = n124*pow(n188, n22)*n46*n68*xF[1]*(pow(alpha, -n11*n148 + n47)*n137*n71/n145 + n58*n71);
22315  n331 = n12*pow(n189, n22)*n46*n59*n68*xF[2]*(pow(alpha, -n12*n148 + n47)*n137*n73/n145 + n59*n73);
22316  n332 = n109*n222*n46*n68*(pow(alpha, -n13*n148 + n47)*n13*n137*n2/n145 + n109*n2);
22317  n333 = n112*pow(n191, n22)*n46*n68*xF[4]*(pow(alpha, -n14*n148 + n47)*n137*n14*n2/n145 + n112*n2);
22318  n334 = n15*pow(n192, n22)*n46*n62*n68*xF[5]*(pow(alpha, -n148*n15 + n47)*n137*n69/n145 + n62*n69);
22319  n335 = n108*pow(n193, n22)*n46*n68*xF[6]*(pow(alpha, -n148*n16 + n47)*n137*n16*n2/n145 + n108*n2);
22320  n336 = n125*pow(n194, n22)*n46*n68*xF[7]*(pow(alpha, -n148*n17 + n47)*n137*n75/n145 + n64*n75);
22321  n337 = n128*pow(n195, n22)*n46*n68*xF[8]*(pow(alpha, -n148*n18 + n47)*n137*n18*n2/n145 + n136);
22322  n338 = n133*pow(n196, n22)*n46*n68*(pow(alpha, -n148*n19 + n47)*n137*n72/n145 + n66*n72);
22323  n339 = 1.0*n110*n229*n303*n68;
22324  n340 = n319*n68*n76;
22325  n341 = 0.5*n340;
22326  n342 = pow(alpha, n1*n27)*n106*pow(n145, n22)*n172*pow(n50, n22)*n79 - pow(alpha, n1*n27)*pow(n145, n22)*n29*n31*pow(n50, n22)*n79/n151 + n106*n147*n172 + n139;
22327  n343 = pow(alpha, n1*n27)*n106*pow(n145, n22)*n177*pow(n50, n22)*n79 - pow(alpha, n1*n27)*pow(n145, n22)*n29*n32*pow(n50, n22)*n79/n152 + n106*n147*n177 + n141;
22328  n344 = pow(alpha, n1*n27)*pow(n145, n22)*n167*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27)*pow(n145, n22)*n29*n33*pow(n50, n22)*n79/n153 + n100*n29*n33 + n147*n167*n21*n29;
22329  n345 = pow(alpha, n1*n27)*n126*pow(n145, n22)*pow(n50, n22)*n79/n154 + pow(alpha, n1*n27)*pow(n145, n22)*n170*n21*n29*pow(n50, n22)*n79 + n101*n126 + n147*n170*n21*n29;
22330  n346 = pow(alpha, n1*n27)*n106*pow(n145, n22)*n176*pow(n50, n22)*n79 - pow(alpha, n1*n27)*n119*pow(n145, n22)*pow(n50, n22)*n79/n155 + n106*n147*n176 + n119*n57;
22331  n347 = pow(alpha, n1*n27)*n120*pow(n145, n22)*pow(n50, n22)*n79/n157 + pow(alpha, n1*n27)*pow(n145, n22)*n174*n21*n29*pow(n50, n22)*n79 + n102*n120 + n147*n174*n21*n29;
22332  n348 = pow(alpha, n1*n27)*pow(n145, n22)*n169*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27)*pow(n145, n22)*n29*n41*pow(n50, n22)*n79/n161 + n105*n29*n41 + n147*n169*n21*n29;
22333  n349 = pow(alpha, n1*n27)*n106*pow(n145, n22)*n178*pow(n50, n22)*n79 - pow(alpha, n1*n27)*pow(n145, n22)*n29*n44*pow(n50, n22)*n79/n164 + n106*n147*n178 + n29*n44*n66;
22334  n350 = pow(n185, n22)*n68*n82*xF[13]*(pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n8 + pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n29*n33*pow(n50, n22)*n79 + n100*n29*n33 + n147*n167*n21*n29);
22335  n351 = n117*pow(n186, n22)*n68*(pow(alpha, n1*n27 - n148*n9)*n126*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n9)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n9 + n101*n126 + n147*n170*n21*n29);
22336  n352 = n118*pow(n189, n22)*n68*(pow(alpha, n1*n27 - n12*n148)*n12*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n12*n148)*n120*pow(n145, n22)*pow(n50, n22)*n79 + n102*n120 + n147*n174*n21*n29);
22337  n353 = n240*n68*(pow(alpha, n1*n27 - n14*n148)*n14*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n14*n148)*pow(n145, n22)*n29*n39*pow(n50, n22)*n79 + n103*n29*n39 + n147*n165*n21*n29);
22338  n354 = pow(n193, n22)*n68*n90*xF[6]*(pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n16*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n29*n41*pow(n50, n22)*n79 + n105*n29*n41 + n147*n169*n21*n29);
22339  n355 = n224*n68*n96*(pow(alpha, n1*n27 - n148*n5)*n106*pow(n145, n22)*n5*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n5)*pow(n145, n22)*n29*n30*pow(n50, n22)*n79 + n106*n147*n179 + n142);
22340  n356 = pow(n183, n22)*n68*n97*xF[11]*(pow(alpha, n1*n27 - n148*n6)*n106*pow(n145, n22)*pow(n50, n22)*n6*n79 - pow(alpha, n1*n27 - n148*n6)*pow(n145, n22)*n29*n31*pow(n50, n22)*n79 + n106*n147*n172 + n139);
22341  n357 = n131*pow(n184, n22)*n68*(pow(alpha, n1*n27 - n148*n7)*n106*pow(n145, n22)*pow(n50, n22)*n7*n79 - pow(alpha, n1*n27 - n148*n7)*pow(n145, n22)*n29*n32*pow(n50, n22)*n79 + n106*n147*n177 + n141);
22342  n358 = n130*pow(n187, n22)*n68*(pow(alpha, n1*n27 - n10*n148)*n10*n106*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n10*n148)*n119*pow(n145, n22)*pow(n50, n22)*n79 + n106*n147*n176 + n119*n57);
22343  n359 = n244*n68*(pow(alpha, n1*n27 - n11*n148)*n106*n11*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n11*n148)*n123*pow(n145, n22)*pow(n50, n22)*n79 + n106*n147*n173 + n123*n58);
22344  n360 = n222*n68*n94*(pow(alpha, n1*n27 - n13*n148)*n106*n13*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n13*n148)*pow(n145, n22)*n29*n38*pow(n50, n22)*n79 + n106*n147*n168 + n143);
22345  n361 = n242*n68*(pow(alpha, n1*n27 - n148*n15)*n106*pow(n145, n22)*n15*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n15)*n111*pow(n145, n22)*pow(n50, n22)*n79 + n106*n147*n180 + n111*n62);
22346  n362 = n245*n68*(pow(alpha, n1*n27 - n148*n17)*n106*pow(n145, n22)*n17*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n17)*n115*pow(n145, n22)*pow(n50, n22)*n79 + n106*n147*n166 + n115*n64);
22347  n363 = n246*n68*(pow(alpha, n1*n27 - n148*n18)*n106*pow(n145, n22)*n18*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n18)*pow(n145, n22)*n29*n43*pow(n50, n22)*n79 + n106*n147*n171 + n140);
22348  n364 = n132*pow(n196, n22)*n68*(pow(alpha, n1*n27 - n148*n19)*n106*pow(n145, n22)*n19*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n19)*pow(n145, n22)*n29*n44*pow(n50, n22)*n79 + n106*n147*n178 + n29*n44*n66);
22349  n365 = xTj*(n108*n230*n68 + n109*n228*n68 + n110*n2*n220*n68 + n112*n227*n68 + n113*n226*n68 + n114*n2*n216*n68 + n116*n2*n217*n68 - n117*n313*n68 - n118*pow(n189, n22)*n279*n68 + n130*n314*n68 + n131*n310*n68 + n132*n311*n68 + n134*n312*n68 + n135*n213*n68 + n136*n219*n68 + pow(n183, n22)*n304*n68*n97 + n214*n54*n68*n70 + n218*n66*n68*n72 + n222*n280*n68*n94 + n224*n272*n68*n96 + n231*n68*n69 + n232*n68*n71 + n233*n68*n75 + n234*n68*n73 + n235*n68*n74 + n238*n303*n68 - n240*n281*n68 + n242*n282*n68 + n244*n278*n68 + n245*n284*n68 + n246*n285*n68 + n315*n68*n95);
22350  n366 = n250 + n322 + n365;
22351  n367 = n251 + n252 + n253 + n254 + n255 + n256 + n257 + n258 + n259 + n260 + n261 + n262 + n263 + n264 + n265 + n266 + n323 + n324 + n325 + n326 + n327 + n328 + n329 + n330 + n331 + n332 + n333 + n334 + n335 + n336 + n337 + n338 + n340 + n350 + n351 + n352 + n353 + n354 + n355 + n356 + n357 + n358 + n359 + n360 + n361 + n362 + n363 + n364;
22352  n368 = -n117*n276*n68*(n113*n46 + n147*n170*n46)/n202 - n118*n279*n68*(n12*n46*n59 + n147*n174*n46)/n205 - n122*n282*n68*(n147*n180*n46 + n15*n46*n62)/n208 + n130*n277*n68*(n127*n46 + n147*n176*n46)/n203 + n131*n274*n68*(n147*n177*n46 + n46*n54*n7)/n200 + n132*n286*n68*(n147*n178*n46 + n19*n46*n66)/n212 + n134*n275*n68*(n116*n46 + n147*n167*n46)/n201 + n223*n283*n68*n95*(n108*n46 + n147*n169*n46) + n225*n272*n68*n96*(n114*n46 + n147*n179*n46) - n237*n305*n68*(n124*n46 + n147*n173*n46) - n239*n271*n307*n68 - n241*n281*n68*(n112*n46 + n147*n165*n46) + n243*n284*n68*(n125*n46 + n147*n166*n46) + n367 - n306*n68*n92*(n128*n46 + n147*n171*n46)/n211 + n280*n68*n94*xF[3]*(n109*n46 + n147*n168*n46)/n206 + n304*n68*n97*(n147*n172*n46 + n46*n53*n6)/n199;
22353  n369 = n368*xTj;
22354  NP_b = -n110*n229*n270*n68*n76 - n250 - n27*(1.0*n110*n229*n68*xF[0]*(pow(alpha, -n1*n148 + n47)*n1*n137*n2/n145 + n110*n2) + 0.5*pow(n181, n22)*n68*n76*xF[0]*(-pow(alpha, -n1*n148 + n47)*n121*n137/n145 + n121*n98) - 1.0*n239*n287*n68 + n267 - 0.5*xTj*(n117*pow(n186, n22)*n68*(pow(alpha, n1*n27 - n148*n9)*n126*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n9)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n9 + pow(alpha, -n148*n9 + n47)*n137*n21*n29*n9/n145 + n101*n126) + n117*n22*n316*n68 + n118*pow(n189, n22)*n68*(pow(alpha, n1*n27 - n12*n148)*n12*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n12*n148)*n120*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n12*n148 + n47)*n12*n137*n21*n29/n145 + n102*n120) + n118*n22*n317*n68 + n122*n22*n318*n68 + n130*pow(n187, n22)*n68*(pow(alpha, n1*n27 - n10*n148)*n10*n106*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n10*n148)*n119*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n10*n148 + n47)*n10*n106*n137/n145 + n119*n57) + n131*pow(n184, n22)*n68*(pow(alpha, n1*n27 - n148*n7)*n106*pow(n145, n22)*pow(n50, n22)*n7*n79 - pow(alpha, n1*n27 - n148*n7)*pow(n145, n22)*n29*n32*pow(n50, n22)*n79 + pow(alpha, -n148*n7 + n47)*n106*n137*n7/n145 + n141) + n132*pow(n196, n22)*n68*(pow(alpha, n1*n27 - n148*n19)*n106*pow(n145, n22)*n19*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n19)*pow(n145, n22)*n29*n44*pow(n50, n22)*n79 + pow(alpha, -n148*n19 + n47)*n106*n137*n19/n145 + n29*n44*n66) + pow(n181, n22)*n68*n76*xF[0]*(-pow(alpha, -n1*n148 + n47)*n121*n137/n145 + n121*n98) + pow(n183, n22)*n68*n97*xF[11]*(pow(alpha, n1*n27 - n148*n6)*n106*pow(n145, n22)*pow(n50, n22)*n6*n79 - pow(alpha, n1*n27 - n148*n6)*pow(n145, n22)*n29*n31*pow(n50, n22)*n79 + pow(alpha, -n148*n6 + n47)*n106*n137*n6/n145 + n139) + pow(n185, n22)*n68*n82*xF[13]*(pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n8 + pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n29*n33*pow(n50, n22)*n79 + pow(alpha, -n148*n8 + n47)*n137*n21*n29*n8/n145 + n100*n29*n33) + pow(n193, n22)*n68*n90*xF[6]*(pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n16*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n29*n41*pow(n50, n22)*n79 + pow(alpha, -n148*n16 + n47)*n137*n16*n21*n29/n145 + n105*n29*n41) + n22*n223*n299*n68*n90 + n22*n225*n288*n68*n77 + n22*n237*n308*n68 + n22*n239*n287*n68 + n22*n241*n297*n68 + n22*n320*n68 + n22*n321*n68 + n222*n68*n94*(pow(alpha, n1*n27 - n13*n148)*n106*n13*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n13*n148)*pow(n145, n22)*n29*n38*pow(n50, n22)*n79 + pow(alpha, -n13*n148 + n47)*n106*n13*n137/n145 + n143) + n224*n68*n96*(pow(alpha, n1*n27 - n148*n5)*n106*pow(n145, n22)*n5*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n5)*pow(n145, n22)*n29*n30*pow(n50, n22)*n79 + pow(alpha, -n148*n5 + n47)*n106*n137*n5/n145 + n142) + n240*n68*(pow(alpha, n1*n27 - n14*n148)*n14*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n14*n148)*pow(n145, n22)*n29*n39*pow(n50, n22)*n79 + pow(alpha, -n14*n148 + n47)*n137*n14*n21*n29/n145 + n103*n29*n39) + n242*n68*(pow(alpha, n1*n27 - n148*n15)*n106*pow(n145, n22)*n15*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n15)*n111*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n148*n15 + n47)*n106*n137*n15/n145 + n111*n62) + n244*n68*(pow(alpha, n1*n27 - n11*n148)*n106*n11*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n11*n148)*n123*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n11*n148 + n47)*n106*n11*n137/n145 + n123*n58) + n245*n68*(pow(alpha, n1*n27 - n148*n17)*n106*pow(n145, n22)*n17*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n17)*n115*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n148*n17 + n47)*n106*n137*n17/n145 + n115*n64) + n246*n68*(pow(alpha, n1*n27 - n148*n18)*n106*pow(n145, n22)*n18*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n18)*pow(n145, n22)*n29*n43*pow(n50, n22)*n79 + pow(alpha, -n148*n18 + n47)*n106*n137*n18/n145 + n140) + n251 + n252 + n253 + n254 + n255 + n256 + n257 + n258 + n259 + n260 + n261 + n262 + n263 + n264 + n265 + n266 + n323 + n324 + n325 + n326 + n327 + n328 + n329 + n330 + n331 + n332 + n333 + n334 + n335 + n336 + n337 + n338 + n22*n302*n68*n93*xF[9]/n212 + n22*n300*n68*n91*xF[7]/n210 + n22*n296*n68*n87*xF[3]/n206 + n22*n293*n68*n84*xF[15]/n203 + n22*n291*n68*n82*xF[13]/n201 + n22*n290*n68*n81*xF[12]/n200)) - n68*xTj*(n108*n230 + n109*n228 + n110*n2*n220 + n112*n227 + n113*n226 + n114*n2*n216 + n116*n2*n217 - n117*n313 - n118*pow(n189, n22)*n279 + n130*n314 + n131*n310 + n132*n311 + n134*n312 + n135*n213 + n136*n219 + pow(n183, n22)*n304*n97 + n214*n54*n70 + n218*n66*n72 + n222*n280*n94 + n224*n272*n96 + n231*n69 + n232*n71 + n233*n75 + n234*n73 + n235*n74 + n238*n303 - n240*n281 + n242*n282 + n244*n278 + n245*n284 + n246*n285 + n315*n95);
22355  NP_2a = -n68*(pow(alpha, n1*n27)*n0*n121*pow(n181, n22)*n270 - pow(alpha, n1*n27)*n0*n121*n239*pow(n269, -n0) + n121*pow(n181, n22)*n76*n98*xF[0]*(-1 + (-n23 + xPj*xTj)/(n145*n149*n50)) - 1.0*n144/n181 + 1.0*xTj*(n0*n21*n229*n49*xF[0]*(pow(alpha, n148*n21 + n47)*n1*n137*n2/n145 + n110*n2) + n108*pow(n193, n22)*n46*xF[6]*(pow(alpha, -n148*n16 + n47)*n137*n16*n2/n145 + n108*n2) + n109*n222*n46*(pow(alpha, -n13*n148 + n47)*n13*n137*n2/n145 + n109*n2) + n111*n231 + n112*pow(n191, n22)*n46*xF[4]*(pow(alpha, -n14*n148 + n47)*n137*n14*n2/n145 + n112*n2) + n113*pow(n186, n22)*n46*xF[14]*(pow(alpha, -n148*n9 + n47)*n137*n2*n9/n145 + n113*n2) + n114*n224*n46*(pow(alpha, -n148*n5 + n47)*n137*n2*n5/n145 + n114*n2) + n115*n233 + n116*pow(n185, n22)*n46*xF[13]*(pow(alpha, -n148*n8 + n47)*n137*n2*n8/n145 + n116*n2) + n117*pow(n186, n22)*(pow(alpha, n1*n27 - n148*n9)*n126*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n9)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n9 + n101*n126 + n147*n170*n21*n29) + n117*n22*n316 + n118*pow(n189, n22)*(pow(alpha, n1*n27 - n12*n148)*n12*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n12*n148)*n120*pow(n145, n22)*pow(n50, n22)*n79 + n102*n120 + n147*n174*n21*n29) + n118*n22*n317 + n119*n235 + n12*pow(n189, n22)*n46*n59*xF[2]*(pow(alpha, -n12*n148 + n47)*n137*n73/n145 + n59*n73) + n120*n234 + n122*n22*n318 + n123*n232 + n124*pow(n188, n22)*n46*xF[1]*(pow(alpha, -n11*n148 + n47)*n137*n71/n145 + n58*n71) + n125*pow(n194, n22)*n46*xF[7]*(pow(alpha, -n148*n17 + n47)*n137*n75/n145 + n64*n75) + n126*n236 + n127*pow(n187, n22)*n46*xF[15]*(pow(alpha, -n10*n148 + n47)*n137*n74/n145 + n57*n74) + n128*pow(n195, n22)*n46*xF[8]*(pow(alpha, -n148*n18 + n47)*n137*n18*n2/n145 + n136) + n130*pow(n187, n22)*(pow(alpha, n1*n27 - n10*n148)*n10*n106*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n10*n148)*n119*pow(n145, n22)*pow(n50, n22)*n79 + n106*n147*n176 + n119*n57) + n131*pow(n184, n22)*(pow(alpha, n1*n27 - n148*n7)*n106*pow(n145, n22)*pow(n50, n22)*n7*n79 - pow(alpha, n1*n27 - n148*n7)*pow(n145, n22)*n29*n32*pow(n50, n22)*n79 + n106*n147*n177 + n141) + n132*pow(n196, n22)*(pow(alpha, n1*n27 - n148*n19)*n106*pow(n145, n22)*n19*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n19)*pow(n145, n22)*n29*n44*pow(n50, n22)*n79 + n106*n147*n178 + n29*n44*n66) + n133*pow(n196, n22)*n46*(pow(alpha, -n148*n19 + n47)*n137*n72/n145 + n66*n72) + n138*n217 + n139*n213 + n140*n219 + n141*n214 + n142*n216 + n143*n221 + n144/n181 + n15*pow(n192, n22)*n46*n62*xF[5]*(pow(alpha, -n148*n15 + n47)*n137*n69/n145 + n62*n69) + pow(n183, n22)*n46*n53*n6*xF[11]*(pow(alpha, -n148*n6 + n47)*n137*n2*n6/n145 + n135) + pow(n183, n22)*n97*xF[11]*(pow(alpha, n1*n27 - n148*n6)*n106*pow(n145, n22)*pow(n50, n22)*n6*n79 - pow(alpha, n1*n27 - n148*n6)*pow(n145, n22)*n29*n31*pow(n50, n22)*n79 + n106*n147*n172 + n139) + pow(n184, n22)*n46*n54*n7*xF[12]*(pow(alpha, -n148*n7 + n47)*n137*n70/n145 + n54*n70) + pow(n185, n22)*n82*xF[13]*(pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n8 + pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n29*n33*pow(n50, n22)*n79 + n100*n29*n33 + n147*n167*n21*n29) + pow(n193, n22)*n90*xF[6]*(pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n16*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n29*n41*pow(n50, n22)*n79 + n105*n29*n41 + n147*n169*n21*n29) + n22*n223*n299*n90 + n22*n225*n288*n77 + n22*n237*n308 + n22*n239*n287 + n22*n241*n297 + n22*n320 + n22*n321 + n222*n94*(pow(alpha, n1*n27 - n13*n148)*n106*n13*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n13*n148)*pow(n145, n22)*n29*n38*pow(n50, n22)*n79 + n106*n147*n168 + n143) + n224*n96*(pow(alpha, n1*n27 - n148*n5)*n106*pow(n145, n22)*n5*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n5)*pow(n145, n22)*n29*n30*pow(n50, n22)*n79 + n106*n147*n179 + n142) + n240*(pow(alpha, n1*n27 - n14*n148)*n14*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n14*n148)*pow(n145, n22)*n29*n39*pow(n50, n22)*n79 + n103*n29*n39 + n147*n165*n21*n29) + n242*(pow(alpha, n1*n27 - n148*n15)*n106*pow(n145, n22)*n15*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n15)*n111*pow(n145, n22)*pow(n50, n22)*n79 + n106*n147*n180 + n111*n62) + n244*(pow(alpha, n1*n27 - n11*n148)*n106*n11*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n11*n148)*n123*pow(n145, n22)*pow(n50, n22)*n79 + n106*n147*n173 + n123*n58) + n245*(pow(alpha, n1*n27 - n148*n17)*n106*pow(n145, n22)*n17*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n17)*n115*pow(n145, n22)*pow(n50, n22)*n79 + n106*n147*n166 + n115*n64) + n246*(pow(alpha, n1*n27 - n148*n18)*n106*pow(n145, n22)*n18*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n18)*pow(n145, n22)*n29*n43*pow(n50, n22)*n79 + n106*n147*n171 + n140) + n247 + n248 + n249 + n319*n76 + n22*n302*n93*xF[9]/n212 + n22*n300*n91*xF[7]/n210 + n22*n296*n87*xF[3]/n206 + n22*n293*n84*xF[15]/n203 + n22*n291*n82*xF[13]/n201 + n22*n290*n81*xF[12]/n200));
22356  NP_sqrt_base = (-NP0*n366 - n25*(-n117*n68/(n83 - 1 + pow(alpha, -n9*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n118*n68/(n86 - 1 + pow(alpha, -n12*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n122*n68/(n89 - 1 + pow(alpha, -n15*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n76*xF[0]/(pow(alpha, n21*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1)) + n76 - 1) - n68*n77*xF[10]/(n77 - 1 + pow(alpha, -n5*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n80*xF[11]/(n80 - 1 + pow(alpha, -n6*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n81*xF[12]/(n81 - 1 + pow(alpha, -n7*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n82*xF[13]/(n82 - 1 + pow(alpha, -n8*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n84*xF[15]/(n84 - 1 + pow(alpha, -n10*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n85*xF[1]/(n85 - 1 + pow(alpha, -n11*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n87*xF[3]/(n87 - 1 + pow(alpha, -n13*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n88*xF[4]/(n88 - 1 + pow(alpha, -n14*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n90*xF[6]/(n90 - 1 + pow(alpha, -n16*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n91*xF[7]/(n91 - 1 + pow(alpha, -n17*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n92*xF[8]/(n92 - 1 + pow(alpha, -n18*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n68*n93*xF[9]/(n93 - 1 + pow(alpha, -n19*(n107*(n146 - log(n98*(n23 + n26*xTj)/(n23 - xF[0]*xTj) + 1)) + 1)))) + n68*n76*xF[0]/(-n175 + n76 - 1) - pow(NP0, -n0)*(1.0*n110*n229*n303*n68 - 0.5*n239*n271*n307*n68 + 0.5*n251 + 0.5*n340 - 0.5*n369))*(-n0*n25*(n117*pow(n186, n22)*n68*(pow(alpha, n1*n27 - n148*n9)*n126*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n9)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n9 + pow(alpha, -n148*n9 + n47)*n137*n21*n29*n9/n145 + n101*n126) - n117*n68*(pow(alpha, -n148*n9 + n47)*n137*n2*n9/n145 + n113*n2)*(pow(alpha, -n148*n9 + n47)*n137*n46*n9/n145 + n113*n46)/n202 + n118*pow(n189, n22)*n68*(pow(alpha, n1*n27 - n12*n148)*n12*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n12*n148)*n120*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n12*n148 + n47)*n12*n137*n21*n29/n145 + n102*n120) - n118*n68*(pow(alpha, -n12*n148 + n47)*n137*n73/n145 + n59*n73)*(pow(alpha, -n12*n148 + n47)*n12*n137*n46/n145 + n12*n46*n59)/n205 - n122*n68*(pow(alpha, -n148*n15 + n47)*n137*n69/n145 + n62*n69)*(pow(alpha, -n148*n15 + n47)*n137*n15*n46/n145 + n15*n46*n62)/n208 + n130*pow(n187, n22)*n68*(pow(alpha, n1*n27 - n10*n148)*n10*n106*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n10*n148)*n119*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n10*n148 + n47)*n10*n106*n137/n145 + n119*n57) + n130*n68*(pow(alpha, -n10*n148 + n47)*n137*n74/n145 + n57*n74)*(pow(alpha, -n10*n148 + n47)*n10*n137*n46/n145 + n127*n46)/n203 + n131*pow(n184, n22)*n68*(pow(alpha, n1*n27 - n148*n7)*n106*pow(n145, n22)*pow(n50, n22)*n7*n79 - pow(alpha, n1*n27 - n148*n7)*pow(n145, n22)*n29*n32*pow(n50, n22)*n79 + pow(alpha, -n148*n7 + n47)*n106*n137*n7/n145 + n141) + n131*n68*(pow(alpha, -n148*n7 + n47)*n137*n70/n145 + n54*n70)*(pow(alpha, -n148*n7 + n47)*n137*n46*n7/n145 + n46*n54*n7)/n200 + n132*pow(n196, n22)*n68*(pow(alpha, n1*n27 - n148*n19)*n106*pow(n145, n22)*n19*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n19)*pow(n145, n22)*n29*n44*pow(n50, n22)*n79 + pow(alpha, -n148*n19 + n47)*n106*n137*n19/n145 + n29*n44*n66) + n132*n68*(pow(alpha, -n148*n19 + n47)*n137*n72/n145 + n66*n72)*(pow(alpha, -n148*n19 + n47)*n137*n19*n46/n145 + n19*n46*n66)/n212 + n134*n68*(pow(alpha, -n148*n8 + n47)*n137*n2*n8/n145 + n116*n2)*(pow(alpha, -n148*n8 + n47)*n137*n46*n8/n145 + n116*n46)/n201 + pow(n181, n22)*n68*n76*xF[0]*(pow(alpha, -n1*n148 + n47)*n121*(-n23 + xPj*xTj)/(n145*n50) + n121*n98) + pow(n183, n22)*n68*n97*xF[11]*(pow(alpha, n1*n27 - n148*n6)*n106*pow(n145, n22)*pow(n50, n22)*n6*n79 - pow(alpha, n1*n27 - n148*n6)*pow(n145, n22)*n29*n31*pow(n50, n22)*n79 + pow(alpha, -n148*n6 + n47)*n106*n137*n6/n145 + n139) + pow(n185, n22)*n68*n82*xF[13]*(pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n8 + pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n29*n33*pow(n50, n22)*n79 + pow(alpha, -n148*n8 + n47)*n137*n21*n29*n8/n145 + n100*n29*n33) + pow(n193, n22)*n68*n90*xF[6]*(pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n16*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n29*n41*pow(n50, n22)*n79 + pow(alpha, -n148*n16 + n47)*n137*n16*n21*n29/n145 + n105*n29*n41) + n222*n68*n94*(pow(alpha, n1*n27 - n13*n148)*n106*n13*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n13*n148)*pow(n145, n22)*n29*n38*pow(n50, n22)*n79 + pow(alpha, -n13*n148 + n47)*n106*n13*n137/n145 + n143) + n223*n68*n95*(pow(alpha, -n148*n16 + n47)*n137*n16*n2/n145 + n108*n2)*(pow(alpha, -n148*n16 + n47)*n137*n16*n46/n145 + n108*n46) + n224*n68*n96*(pow(alpha, n1*n27 - n148*n5)*n106*pow(n145, n22)*n5*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n5)*pow(n145, n22)*n29*n30*pow(n50, n22)*n79 + pow(alpha, -n148*n5 + n47)*n106*n137*n5/n145 + n142) + n225*n68*n96*(pow(alpha, -n148*n5 + n47)*n137*n2*n5/n145 + n114*n2)*(pow(alpha, -n148*n5 + n47)*n137*n46*n5/n145 + n114*n46) - n237*n68*xF[1]*(pow(alpha, -n11*n148 + n47)*n137*n71/n145 + n58*n71)*(pow(alpha, -n11*n148 + n47)*n11*n137*n46/n145 + n124*n46) - n239*n68*(pow(alpha, -n1*n148 + n47)*n1*n137*n2/n145 + n110*n2)*(pow(alpha, -n1*n148 + n47)*n0*n137*n2*n21/n145 + n0*n2*n21*n49) + n240*n68*(pow(alpha, n1*n27 - n14*n148)*n14*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n14*n148)*pow(n145, n22)*n29*n39*pow(n50, n22)*n79 + pow(alpha, -n14*n148 + n47)*n137*n14*n21*n29/n145 + n103*n29*n39) - n241*n68*(pow(alpha, -n14*n148 + n47)*n137*n14*n2/n145 + n112*n2)*(pow(alpha, -n14*n148 + n47)*n137*n14*n46/n145 + n112*n46) + n242*n68*(pow(alpha, n1*n27 - n148*n15)*n106*pow(n145, n22)*n15*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n15)*n111*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n148*n15 + n47)*n106*n137*n15/n145 + n111*n62) + n243*n68*(pow(alpha, -n148*n17 + n47)*n137*n75/n145 + n64*n75)*(pow(alpha, -n148*n17 + n47)*n137*n17*n46/n145 + n125*n46) + n244*n68*(pow(alpha, n1*n27 - n11*n148)*n106*n11*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n11*n148)*n123*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n11*n148 + n47)*n106*n11*n137/n145 + n123*n58) + n245*n68*(pow(alpha, n1*n27 - n148*n17)*n106*pow(n145, n22)*n17*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n17)*n115*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n148*n17 + n47)*n106*n137*n17/n145 + n115*n64) + n246*n68*(pow(alpha, n1*n27 - n148*n18)*n106*pow(n145, n22)*n18*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n18)*pow(n145, n22)*n29*n43*pow(n50, n22)*n79 + pow(alpha, -n148*n18 + n47)*n106*n137*n18/n145 + n140) + n251 + n252 + n253 + n254 + n255 + n256 + n257 + n258 + n259 + n260 + n261 + n262 + n263 + n264 + n265 + n266 + n323 + n324 + n325 + n326 + n327 + n328 + n329 + n330 + n331 + n332 + n333 + n334 + n335 + n336 + n337 + n338 - n68*n92*xF[8]*(pow(alpha, -n148*n18 + n47)*n137*n18*n2/n145 + n136)*(pow(alpha, -n148*n18 + n47)*n137*n18*n46/n145 + n128*n46)/n211 + n68*n94*xF[3]*(pow(alpha, -n13*n148 + n47)*n13*n137*n2/n145 + n109*n2)*(pow(alpha, -n13*n148 + n47)*n13*n137*n46/n145 + n109*n46)/n206 + n68*n97*xF[11]*(pow(alpha, -n148*n6 + n47)*n137*n2*n6/n145 + n135)*(pow(alpha, -n148*n6 + n47)*n137*n46*n6/n145 + n46*n53*n6)/n199) - n0*n251 - n0*n340 + 4.0*n110*n229*n303*n68 - 4.0*n239*n287*n68) + pow(-n27*(1.0*n110*n229*n68*xF[0]*(pow(alpha, -n1*n148 + n47)*n1*n137*n2/n145 + n110*n2) + 0.5*pow(n181, n22)*n68*n76*xF[0]*(-pow(alpha, -n1*n148 + n47)*n121*n137/n145 + n121*n98) - 0.5*n239*n68*(pow(alpha, -n1*n148 + n47)*n1*n137*n2/n145 + n110*n2)*(pow(alpha, -n1*n148 + n47)*n0*n137*n2*n21/n145 + n0*n2*n21*n49) + n267 - 0.5*xTj*(n117*pow(n186, n22)*n68*(pow(alpha, n1*n27 - n148*n9)*n126*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n9)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n9 + pow(alpha, -n148*n9 + n47)*n137*n21*n29*n9/n145 + n101*n126) - n117*n68*(pow(alpha, -n148*n9 + n47)*n137*n2*n9/n145 + n113*n2)*(pow(alpha, -n148*n9 + n47)*n137*n46*n9/n145 + n113*n46)/n202 + n118*pow(n189, n22)*n68*(pow(alpha, n1*n27 - n12*n148)*n12*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n12*n148)*n120*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n12*n148 + n47)*n12*n137*n21*n29/n145 + n102*n120) - n118*n68*(pow(alpha, -n12*n148 + n47)*n137*n73/n145 + n59*n73)*(pow(alpha, -n12*n148 + n47)*n12*n137*n46/n145 + n12*n46*n59)/n205 - n122*n68*(pow(alpha, -n148*n15 + n47)*n137*n69/n145 + n62*n69)*(pow(alpha, -n148*n15 + n47)*n137*n15*n46/n145 + n15*n46*n62)/n208 + n130*pow(n187, n22)*n68*(pow(alpha, n1*n27 - n10*n148)*n10*n106*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n10*n148)*n119*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n10*n148 + n47)*n10*n106*n137/n145 + n119*n57) + n130*n68*(pow(alpha, -n10*n148 + n47)*n137*n74/n145 + n57*n74)*(pow(alpha, -n10*n148 + n47)*n10*n137*n46/n145 + n127*n46)/n203 + n131*pow(n184, n22)*n68*(pow(alpha, n1*n27 - n148*n7)*n106*pow(n145, n22)*pow(n50, n22)*n7*n79 - pow(alpha, n1*n27 - n148*n7)*pow(n145, n22)*n29*n32*pow(n50, n22)*n79 + pow(alpha, -n148*n7 + n47)*n106*n137*n7/n145 + n141) + n131*n68*(pow(alpha, -n148*n7 + n47)*n137*n70/n145 + n54*n70)*(pow(alpha, -n148*n7 + n47)*n137*n46*n7/n145 + n46*n54*n7)/n200 + n132*pow(n196, n22)*n68*(pow(alpha, n1*n27 - n148*n19)*n106*pow(n145, n22)*n19*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n19)*pow(n145, n22)*n29*n44*pow(n50, n22)*n79 + pow(alpha, -n148*n19 + n47)*n106*n137*n19/n145 + n29*n44*n66) + n132*n68*(pow(alpha, -n148*n19 + n47)*n137*n72/n145 + n66*n72)*(pow(alpha, -n148*n19 + n47)*n137*n19*n46/n145 + n19*n46*n66)/n212 + n134*n68*(pow(alpha, -n148*n8 + n47)*n137*n2*n8/n145 + n116*n2)*(pow(alpha, -n148*n8 + n47)*n137*n46*n8/n145 + n116*n46)/n201 + pow(n181, n22)*n68*n76*xF[0]*(-pow(alpha, -n1*n148 + n47)*n121*n137/n145 + n121*n98) + pow(n183, n22)*n68*n97*xF[11]*(pow(alpha, n1*n27 - n148*n6)*n106*pow(n145, n22)*pow(n50, n22)*n6*n79 - pow(alpha, n1*n27 - n148*n6)*pow(n145, n22)*n29*n31*pow(n50, n22)*n79 + pow(alpha, -n148*n6 + n47)*n106*n137*n6/n145 + n139) + pow(n185, n22)*n68*n82*xF[13]*(pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n21*n29*pow(n50, n22)*n79*n8 + pow(alpha, n1*n27 - n148*n8)*pow(n145, n22)*n29*n33*pow(n50, n22)*n79 + pow(alpha, -n148*n8 + n47)*n137*n21*n29*n8/n145 + n100*n29*n33) + pow(n193, n22)*n68*n90*xF[6]*(pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n16*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n148*n16)*pow(n145, n22)*n29*n41*pow(n50, n22)*n79 + pow(alpha, -n148*n16 + n47)*n137*n16*n21*n29/n145 + n105*n29*n41) + n222*n68*n94*(pow(alpha, n1*n27 - n13*n148)*n106*n13*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n13*n148)*pow(n145, n22)*n29*n38*pow(n50, n22)*n79 + pow(alpha, -n13*n148 + n47)*n106*n13*n137/n145 + n143) + n223*n68*n95*(pow(alpha, -n148*n16 + n47)*n137*n16*n2/n145 + n108*n2)*(pow(alpha, -n148*n16 + n47)*n137*n16*n46/n145 + n108*n46) + n224*n68*n96*(pow(alpha, n1*n27 - n148*n5)*n106*pow(n145, n22)*n5*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n5)*pow(n145, n22)*n29*n30*pow(n50, n22)*n79 + pow(alpha, -n148*n5 + n47)*n106*n137*n5/n145 + n142) + n225*n68*n96*(pow(alpha, -n148*n5 + n47)*n137*n2*n5/n145 + n114*n2)*(pow(alpha, -n148*n5 + n47)*n137*n46*n5/n145 + n114*n46) - n237*n68*xF[1]*(pow(alpha, -n11*n148 + n47)*n137*n71/n145 + n58*n71)*(pow(alpha, -n11*n148 + n47)*n11*n137*n46/n145 + n124*n46) - n239*n68*(pow(alpha, -n1*n148 + n47)*n1*n137*n2/n145 + n110*n2)*(pow(alpha, -n1*n148 + n47)*n0*n137*n2*n21/n145 + n0*n2*n21*n49) + n240*n68*(pow(alpha, n1*n27 - n14*n148)*n14*pow(n145, n22)*n21*n29*pow(n50, n22)*n79 + pow(alpha, n1*n27 - n14*n148)*pow(n145, n22)*n29*n39*pow(n50, n22)*n79 + pow(alpha, -n14*n148 + n47)*n137*n14*n21*n29/n145 + n103*n29*n39) - n241*n68*(pow(alpha, -n14*n148 + n47)*n137*n14*n2/n145 + n112*n2)*(pow(alpha, -n14*n148 + n47)*n137*n14*n46/n145 + n112*n46) + n242*n68*(pow(alpha, n1*n27 - n148*n15)*n106*pow(n145, n22)*n15*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n15)*n111*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n148*n15 + n47)*n106*n137*n15/n145 + n111*n62) + n243*n68*(pow(alpha, -n148*n17 + n47)*n137*n75/n145 + n64*n75)*(pow(alpha, -n148*n17 + n47)*n137*n17*n46/n145 + n125*n46) + n244*n68*(pow(alpha, n1*n27 - n11*n148)*n106*n11*pow(n145, n22)*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n11*n148)*n123*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n11*n148 + n47)*n106*n11*n137/n145 + n123*n58) + n245*n68*(pow(alpha, n1*n27 - n148*n17)*n106*pow(n145, n22)*n17*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n17)*n115*pow(n145, n22)*pow(n50, n22)*n79 + pow(alpha, -n148*n17 + n47)*n106*n137*n17/n145 + n115*n64) + n246*n68*(pow(alpha, n1*n27 - n148*n18)*n106*pow(n145, n22)*n18*pow(n50, n22)*n79 - pow(alpha, n1*n27 - n148*n18)*pow(n145, n22)*n29*n43*pow(n50, n22)*n79 + pow(alpha, -n148*n18 + n47)*n106*n137*n18/n145 + n140) + n251 + n252 + n253 + n254 + n255 + n256 + n257 + n258 + n259 + n260 + n261 + n262 + n263 + n264 + n265 + n266 + n323 + n324 + n325 + n326 + n327 + n328 + n329 + n330 + n331 + n332 + n333 + n334 + n335 + n336 + n337 + n338 - n68*n92*xF[8]*(pow(alpha, -n148*n18 + n47)*n137*n18*n2/n145 + n136)*(pow(alpha, -n148*n18 + n47)*n137*n18*n46/n145 + n128*n46)/n211 + n68*n94*xF[3]*(pow(alpha, -n13*n148 + n47)*n13*n137*n2/n145 + n109*n2)*(pow(alpha, -n13*n148 + n47)*n13*n137*n46/n145 + n109*n46)/n206 + n68*n97*xF[11]*(pow(alpha, -n148*n6 + n47)*n137*n2*n6/n145 + n135)*(pow(alpha, -n148*n6 + n47)*n137*n46*n6/n145 + n46*n53*n6)/n199)) - n366, -n0);
22357  NP_sqrt_base = fabs(NP_sqrt_base);
22358  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
22359  NT1 = n107*(n146 - log(-pow(alpha, NP1*n1)*n137 + 1));
22360  g0 = MW[1] - Mstar;
22361  g1 = MW[0] - Mstar;
22362  g2 = NT1 + 1;
22363  g3 = xPj - xTj;
22364  g4 = MW[10] - Mstar;
22365  g5 = MW[11] - Mstar;
22366  g6 = MW[12] - Mstar;
22367  g7 = MW[13] - Mstar;
22368  g8 = MW[14] - Mstar;
22369  g9 = MW[15] - Mstar;
22370  g10 = MW[2] - Mstar;
22371  g11 = MW[3] - Mstar;
22372  g12 = MW[4] - Mstar;
22373  g13 = MW[5] - Mstar;
22374  g14 = MW[6] - Mstar;
22375  g15 = MW[7] - Mstar;
22376  g16 = MW[8] - Mstar;
22377  g17 = MW[9] - Mstar;
22378  g18 = xF[0] - xTj;
22379  g19 = xF[0] - xPj;
22380  g20 = -xTj;
22381  g21 = xPj/xF[1];
22382  g22 = pow(alpha, -g1);
22383  g23 = pow(alpha, -g4);
22384  g24 = pow(alpha, -g5);
22385  g25 = pow(alpha, -g6);
22386  g26 = pow(alpha, -g7);
22387  g27 = pow(alpha, -g8);
22388  g28 = pow(alpha, -g9);
22389  g29 = pow(alpha, -g0);
22390  g30 = pow(alpha, -g10);
22391  g31 = pow(alpha, -g11);
22392  g32 = pow(alpha, -g12);
22393  g33 = pow(alpha, -g13);
22394  g34 = pow(alpha, -g14);
22395  g35 = pow(alpha, -g15);
22396  g36 = pow(alpha, -g16);
22397  g37 = pow(alpha, -g17);
22398  g38 = log(xF[0]/xF[1]);
22399  g39 = -g2;
22400  g40 = pow(alpha, NP1*g0);
22401  g41 = pow(alpha, NP1*g1);
22402  g42 = pow(alpha, NP1*g4);
22403  g43 = log(g22);
22404  g44 = pow(alpha, NP1*g5);
22405  g45 = pow(alpha, NP1*g6);
22406  g46 = pow(alpha, NP1*g7);
22407  g47 = pow(alpha, NP1*g8);
22408  g48 = pow(alpha, NP1*g9);
22409  g49 = pow(alpha, NP1*g10);
22410  g50 = pow(alpha, NP1*g11);
22411  g51 = pow(alpha, NP1*g12);
22412  g52 = pow(alpha, NP1*g13);
22413  g53 = pow(alpha, NP1*g14);
22414  g54 = pow(alpha, NP1*g15);
22415  g55 = pow(alpha, NP1*g16);
22416  g56 = pow(alpha, NP1*g17);
22417  g57 = -g38;
22418  g58 = g18/g3;
22419  g59 = g3/g18;
22420  g60 = -g40 + 1;
22421  g61 = -g40 + 1;
22422  g62 = -g41 + 1;
22423  g63 = -g49 + 1;
22424  g64 = -g50 + 1;
22425  g65 = -g51 + 1;
22426  g66 = -g52 + 1;
22427  g67 = -g53 + 1;
22428  g68 = -g54 + 1;
22429  g69 = -g55 + 1;
22430  g70 = -g56 + 1;
22431  g71 = -g42 + 1;
22432  g72 = -g44 + 1;
22433  g73 = -g45 + 1;
22434  g74 = -g46 + 1;
22435  g75 = -g47 + 1;
22436  g76 = -g48 + 1;
22437  g77 = -g41;
22438  g78 = -g42;
22439  g79 = -g44;
22440  g80 = -g45;
22441  g81 = -g46;
22442  g82 = -g47;
22443  g83 = -g48;
22444  g84 = -g49;
22445  g85 = -g50;
22446  g86 = -g51;
22447  g87 = -g52;
22448  g88 = -g53;
22449  g89 = -g54;
22450  g90 = -g55;
22451  g91 = -g56;
22452  g92 = -1.0*g38;
22453  g93 = -g3/g19;
22454  g94 = g19/(g3*xF[1]);
22455  g95 = pow(alpha, g0*g39) - 1;
22456  g96 = pow(alpha, g0*g39) - 1;
22457  g97 = pow(alpha, g1*g39) - 1;
22458  g98 = pow(alpha, g10*g39) - 1;
22459  g99 = pow(alpha, g11*g39) - 1;
22460  g100 = pow(alpha, g12*g39) - 1;
22461  g101 = pow(alpha, g13*g39) - 1;
22462  g102 = pow(alpha, g14*g39) - 1;
22463  g103 = pow(alpha, g15*g39) - 1;
22464  g104 = pow(alpha, g16*g39) - 1;
22465  g105 = pow(alpha, g17*g39) - 1;
22466  g106 = pow(alpha, g39*g4) - 1;
22467  g107 = pow(alpha, g39*g5) - 1;
22468  g108 = pow(alpha, g39*g6) - 1;
22469  g109 = pow(alpha, g39*g7) - 1;
22470  g110 = pow(alpha, g39*g8) - 1;
22471  g111 = pow(alpha, g39*g9) - 1;
22472  g112 = -pow(alpha, g1*g39);
22473  g113 = -pow(alpha, g39*g4);
22474  g114 = -pow(alpha, g39*g5);
22475  g115 = -pow(alpha, g39*g6);
22476  g116 = -pow(alpha, g39*g7);
22477  g117 = -pow(alpha, g39*g8);
22478  g118 = -pow(alpha, g39*g9);
22479  g119 = -pow(alpha, g10*g39);
22480  g120 = -pow(alpha, g11*g39);
22481  g121 = -pow(alpha, g12*g39);
22482  g122 = -pow(alpha, g13*g39);
22483  g123 = -pow(alpha, g14*g39);
22484  g124 = -pow(alpha, g15*g39);
22485  g125 = -pow(alpha, g16*g39);
22486  g126 = -pow(alpha, g17*g39);
22487  g127 = g61 + g96;
22488  g128 = -g112 - g41;
22489  g129 = -g113 - g42;
22490  g130 = -g114 - g44;
22491  g131 = -g115 - g45;
22492  g132 = -g116 - g46;
22493  g133 = -g117 - g47;
22494  g134 = -g118 - g48;
22495  g135 = -g119 - g49;
22496  g136 = -g120 - g50;
22497  g137 = -g121 - g51;
22498  g138 = -g122 - g52;
22499  g139 = -g123 - g53;
22500  g140 = -g124 - g54;
22501  g141 = -g125 - g55;
22502  g142 = -g126 - g56;
22503  g143 = pow(alpha, g1*g39) + g77;
22504  g144 = g61 + g96;
22505  g145 = pow(alpha, g39*g4) + g78;
22506  g146 = pow(alpha, g39*g5) + g79;
22507  g147 = pow(alpha, g39*g6) + g80;
22508  g148 = pow(alpha, g39*g7) + g81;
22509  g149 = pow(alpha, g39*g8) + g82;
22510  g150 = pow(alpha, g39*g9) + g83;
22511  g151 = pow(alpha, g10*g39) + g84;
22512  g152 = pow(alpha, g11*g39) + g85;
22513  g153 = pow(alpha, g12*g39) + g86;
22514  g154 = pow(alpha, g13*g39) + g87;
22515  g155 = pow(alpha, g14*g39) + g88;
22516  g156 = pow(alpha, g15*g39) + g89;
22517  g157 = pow(alpha, g16*g39) + g90;
22518  g158 = pow(alpha, g17*g39) + g91;
22519  g159 = xF[11]/g146;
22520  g160 = xF[9]/g158;
22521  g161 = xF[8]/g157;
22522  g162 = xF[1]/g144;
22523  g163 = xF[10]/g145;
22524  g164 = xF[15]/g150;
22525  g165 = xF[3]/g152;
22526  g166 = xF[7]/g156;
22527  g167 = xF[4]/g153;
22528  g168 = xF[12]/g147;
22529  g169 = xF[13]/g148;
22530  g170 = xF[6]/g155;
22531  g171 = xF[14]/g149;
22532  g172 = xF[5]/g154;
22533  g173 = xF[2]/g151;
22534  g174 = xF[0]/g143;
22535  g175 = xF[0]/g128;
22536  g176 = xF[15]/g134;
22537  g177 = xF[4]/g137;
22538  g178 = xF[7]/g140;
22539  g179 = xF[2]/g135;
22540  g180 = xF[11]/g130;
22541  g181 = xF[1]/g127;
22542  g182 = xF[13]/g132;
22543  g183 = xF[3]/g136;
22544  g184 = xF[6]/g139;
22545  g185 = xF[14]/g133;
22546  g186 = xF[8]/g141;
22547  g187 = xF[12]/g131;
22548  g188 = xF[10]/g129;
22549  g189 = xF[9]/g142;
22550  g190 = xF[5]/g138;
22551  g191 = g73/g131;
22552  g192 = g70/g142;
22553  g193 = g76/g134;
22554  g194 = g65/g137;
22555  g195 = g68/g140;
22556  g196 = g62/g128;
22557  g197 = g66/g138;
22558  g198 = g67/g139;
22559  g199 = g74/g132;
22560  g200 = g64/g136;
22561  g201 = g60/g127;
22562  g202 = g72/g130;
22563  g203 = g63/g135;
22564  g204 = g75/g133;
22565  g205 = g71/g129;
22566  g206 = g69/g141;
22567  g207 = g97/g128;
22568  g208 = g111/g134;
22569  g209 = g107/g130;
22570  g210 = g98/g135;
22571  g211 = g99/g136;
22572  g212 = g100/g137;
22573  g213 = g95/g127;
22574  g214 = g104/g141;
22575  g215 = g105/g142;
22576  g216 = g102/g139;
22577  g217 = g110/g133;
22578  g218 = g108/g131;
22579  g219 = g109/g132;
22580  g220 = g103/g140;
22581  g221 = g106/g129;
22582  g222 = g101/g138;
22583  g223 = log(g144*g20*g94/g61);
22584  g224 = log(g127*g20*g94/g60);
22585  g225 = log(g144*g21*g58/g96);
22586  g226 = 1.0*g223;
22587  g227 = log(g127*g21*g58/g95);
22588  g228 = 1.0*g225;
22589  g229 = -g159*g226*(g79 + 1) - g159*g228*(pow(alpha, g39*g5) - 1) - g160*g226*(g91 + 1) - g160*g228*(pow(alpha, g17*g39) - 1) - g161*g226*(g90 + 1) - g161*g228*(pow(alpha, g16*g39) - 1) - g162*g226*g61 - g162*g228*g96 - g163*g226*(g78 + 1) - g163*g228*(pow(alpha, g39*g4) - 1) - g164*g226*(g83 + 1) - g164*g228*(pow(alpha, g39*g9) - 1) - g165*g226*(g85 + 1) - g165*g228*(pow(alpha, g11*g39) - 1) - g166*g226*(g89 + 1) - g166*g228*(pow(alpha, g15*g39) - 1) - g167*g226*(g86 + 1) - g167*g228*(pow(alpha, g12*g39) - 1) - g168*g226*(g80 + 1) - g168*g228*(pow(alpha, g39*g6) - 1) - g169*g226*(g81 + 1) - g169*g228*(pow(alpha, g39*g7) - 1) - g170*g226*(g88 + 1) - g170*g228*(pow(alpha, g14*g39) - 1) - g171*g226*(g82 + 1) - g171*g228*(pow(alpha, g39*g8) - 1) - g172*g226*(g87 + 1) - g172*g228*(pow(alpha, g13*g39) - 1) - g173*g226*(g84 + 1) - g173*g228*(pow(alpha, g10*g39) - 1) - g174*g226*(g77 + 1) - g174*g228*(pow(alpha, g1*g39) - 1) - g92*xF[0] - g92*xF[10] - g92*xF[11] - g92*xF[12] - g92*xF[13] - g92*xF[14] - g92*xF[15] - g92*xF[1] - g92*xF[2] - g92*xF[3] - g92*xF[4] - g92*xF[5] - g92*xF[6] - g92*xF[7] - g92*xF[8] - g92*xF[9];
22590  LpF = xF[0]*(g22 + 1.0)*(g196*g224 + g207*g227 + g57)/(g43*(g22 - 1.0)) + xF[10]*(g23 + 1.0)*(g205*g224 + g221*g227 + g57)/(g43*(g23 - 1.0)) + xF[11]*(g24 + 1.0)*(g202*g224 + g209*g227 + g57)/(g43*(g24 - 1.0)) + xF[12]*(g25 + 1.0)*(g191*g224 + g218*g227 + g57)/(g43*(g25 - 1.0)) + xF[13]*(g26 + 1.0)*(g199*g224 + g219*g227 + g57)/(g43*(g26 - 1.0)) + xF[14]*(g27 + 1.0)*(g204*g224 + g217*g227 + g57)/(g43*(g27 - 1.0)) + xF[15]*(g28 + 1.0)*(g193*g224 + g208*g227 + g57)/(g43*(g28 - 1.0)) + xF[1]*(g29 + 1.0)*(g201*g224 + g213*g227 + g57)/(g43*(g29 - 1.0)) + xF[2]*(g30 + 1.0)*(g203*g224 + g210*g227 + g57)/(g43*(g30 - 1.0)) + xF[3]*(g31 + 1.0)*(g200*g224 + g211*g227 + g57)/(g43*(g31 - 1.0)) + xF[4]*(g32 + 1.0)*(g194*g224 + g212*g227 + g57)/(g43*(g32 - 1.0)) + xF[5]*(g33 + 1.0)*(g197*g224 + g222*g227 + g57)/(g43*(g33 - 1.0)) + xF[6]*(g34 + 1.0)*(g198*g224 + g216*g227 + g57)/(g43*(g34 - 1.0)) + xF[7]*(g35 + 1.0)*(g195*g224 + g220*g227 + g57)/(g43*(g35 - 1.0)) + xF[8]*(g36 + 1.0)*(g206*g224 + g214*g227 + g57)/(g43*(g36 - 1.0)) + xF[9]*(g37 + 1.0)*(g192*g224 + g215*g227 + g57)/(g43*(g37 - 1.0));
22591  PpF = g58;
22592  TpF = -g19/g3;
22593  SWUpF = g229;
22594  SWUpP = g229*g59;
22595  xP[0] = g175*g59*g97;
22596  xP[1] = g181*g59*g95;
22597  xP[2] = g179*g59*g98;
22598  xP[3] = g183*g59*g99;
22599  xP[4] = g100*g177*g59;
22600  xP[5] = g101*g190*g59;
22601  xP[6] = g102*g184*g59;
22602  xP[7] = g103*g178*g59;
22603  xP[8] = g104*g186*g59;
22604  xP[9] = g105*g189*g59;
22605  xP[10] = g106*g188*g59;
22606  xP[11] = g107*g180*g59;
22607  xP[12] = g108*g187*g59;
22608  xP[13] = g109*g182*g59;
22609  xP[14] = g110*g185*g59;
22610  xP[15] = g111*g176*g59;
22611  xT[0] = g175*g62*g93;
22612  xT[1] = g181*g60*g93;
22613  xT[2] = g179*g63*g93;
22614  xT[3] = g183*g64*g93;
22615  xT[4] = g177*g65*g93;
22616  xT[5] = g190*g66*g93;
22617  xT[6] = g184*g67*g93;
22618  xT[7] = g178*g68*g93;
22619  xT[8] = g186*g69*g93;
22620  xT[9] = g189*g70*g93;
22621  xT[10] = g188*g71*g93;
22622  xT[11] = g180*g72*g93;
22623  xT[12] = g187*g73*g93;
22624  xT[13] = g182*g74*g93;
22625  xT[14] = g185*g75*g93;
22626  xT[15] = g176*g76*g93;
22627  break;
22628  case 17:
22629  n0 = MW[0] - Mstar;
22630  n1 = log(alpha);
22631  n2 = xPj - xTj;
22632  n3 = xF[0] - xPj;
22633  n4 = MW[10] - Mstar;
22634  n5 = MW[11] - Mstar;
22635  n6 = MW[12] - Mstar;
22636  n7 = MW[13] - Mstar;
22637  n8 = MW[14] - Mstar;
22638  n9 = MW[15] - Mstar;
22639  n10 = MW[16] - Mstar;
22640  n11 = MW[1] - Mstar;
22641  n12 = MW[2] - Mstar;
22642  n13 = MW[3] - Mstar;
22643  n14 = MW[4] - Mstar;
22644  n15 = MW[5] - Mstar;
22645  n16 = MW[6] - Mstar;
22646  n17 = MW[7] - Mstar;
22647  n18 = MW[8] - Mstar;
22648  n19 = MW[9] - Mstar;
22649  n20 = log(xTj);
22650  n21 = -2;
22651  n22 = -n0;
22652  n23 = xF[0]*xPj;
22653  n24 = -Mstar;
22654  n25 = -NP0*n21;
22655  n26 = -xTj;
22656  n27 = -xPj;
22657  n28 = -MW[0];
22658  n29 = pow(n0, -n21);
22659  n30 = pow(n1, -n21);
22660  n31 = pow(n4, -n21);
22661  n32 = pow(n5, -n21);
22662  n33 = pow(n6, -n21);
22663  n34 = pow(n7, -n21);
22664  n35 = pow(n8, -n21);
22665  n36 = pow(n9, -n21);
22666  n37 = pow(n10, -n21);
22667  n38 = pow(n11, -n21);
22668  n39 = pow(n12, -n21);
22669  n40 = pow(n13, -n21);
22670  n41 = pow(n14, -n21);
22671  n42 = pow(n15, -n21);
22672  n43 = pow(n16, -n21);
22673  n44 = pow(n17, -n21);
22674  n45 = pow(n18, -n21);
22675  n46 = pow(n19, -n21);
22676  n47 = Mstar*n1;
22677  n48 = -n1*n21;
22678  n49 = n1*xF[4];
22679  n50 = pow(alpha, NP0*n0);
22680  n51 = n23 + n26*xF[0];
22681  n52 = n23 + n26*xPj;
22682  n53 = pow(alpha, NP0*n4);
22683  n54 = pow(alpha, NP0*n5);
22684  n55 = pow(alpha, NP0*n6);
22685  n56 = pow(alpha, NP0*n7);
22686  n57 = pow(alpha, NP0*n8);
22687  n58 = pow(alpha, NP0*n9);
22688  n59 = pow(alpha, NP0*n10);
22689  n60 = pow(alpha, NP0*n11);
22690  n61 = pow(alpha, NP0*n12);
22691  n62 = pow(alpha, NP0*n13);
22692  n63 = pow(alpha, NP0*n14);
22693  n64 = pow(alpha, NP0*n15);
22694  n65 = pow(alpha, NP0*n16);
22695  n66 = pow(alpha, NP0*n17);
22696  n67 = pow(alpha, NP0*n18);
22697  n68 = pow(alpha, NP0*n19);
22698  n69 = n1*n28;
22699  n70 = n2/n3;
22700  n71 = n1*n6;
22701  n72 = n1*n15;
22702  n73 = n1*n5;
22703  n74 = n1*n19;
22704  n75 = n1*n14;
22705  n76 = n1*n12;
22706  n77 = n1*n16;
22707  n78 = n1*n9;
22708  n79 = n1*n7;
22709  n80 = n1*n17;
22710  n81 = -n50 + 1;
22711  n82 = -n53 + 1;
22712  n83 = pow(alpha, NP0*n21*n22);
22713  n84 = pow(n51, -n21);
22714  n85 = pow(n52, -n21);
22715  n86 = -n54 + 1;
22716  n87 = -n55 + 1;
22717  n88 = -n56 + 1;
22718  n89 = -n57 + 1;
22719  n90 = -n58 + 1;
22720  n91 = -n59 + 1;
22721  n92 = -n60 + 1;
22722  n93 = -n61 + 1;
22723  n94 = -n62 + 1;
22724  n95 = -n63 + 1;
22725  n96 = -n64 + 1;
22726  n97 = -n65 + 1;
22727  n98 = -n66 + 1;
22728  n99 = -n67 + 1;
22729  n100 = -n68 + 1;
22730  n101 = n81;
22731  n102 = -n50;
22732  n103 = -n54;
22733  n104 = -n56;
22734  n105 = -n57;
22735  n106 = -n59;
22736  n107 = -n61;
22737  n108 = -n63;
22738  n109 = -n64;
22739  n110 = -n65;
22740  n111 = -n70;
22741  n112 = n55*xF[12];
22742  n113 = n66*xF[7];
22743  n114 = n0*n30;
22744  n115 = n68*xF[9];
22745  n116 = 1/(n0*n1);
22746  n117 = n60*xF[1];
22747  n118 = n58*xF[15];
22748  n119 = n61*xF[2];
22749  n120 = n91*xF[16];
22750  n121 = n13*n62;
22751  n122 = n90*xF[15];
22752  n123 = n87*xF[12];
22753  n124 = n0*n50;
22754  n125 = n30*n42;
22755  n126 = n14*n63;
22756  n127 = n100*xF[9];
22757  n128 = n57*n8;
22758  n129 = n4*n53;
22759  n130 = n97*xF[6];
22760  n131 = n89*xF[14];
22761  n132 = n93*xF[2];
22762  n133 = n96*xF[5];
22763  n134 = n88*xF[13];
22764  n135 = n101*xF[0];
22765  n136 = n30*n36;
22766  n137 = n30*n39;
22767  n138 = n10*n59;
22768  n139 = n30*n38;
22769  n140 = n92*xF[1];
22770  n141 = n11*n60;
22771  n142 = n30*n33;
22772  n143 = n56*n7;
22773  n144 = n29*n30;
22774  n145 = n30*n35;
22775  n146 = n18*n67;
22776  n147 = n81*xF[0];
22777  n148 = log((-1.0 + xPj/xF[0])/n2);
22778  n149 = n1*n124;
22779  n150 = n1*n129;
22780  n151 = n54*n73;
22781  n152 = n55*n71;
22782  n153 = n56*n79;
22783  n154 = n1*n128;
22784  n155 = n58*n78;
22785  n156 = n1*n138;
22786  n157 = n1*n141;
22787  n158 = n61*n76;
22788  n159 = n1*n121;
22789  n160 = n63*n75;
22790  n161 = n64*n72;
22791  n162 = n65*n77;
22792  n163 = n66*n80;
22793  n164 = n1*n146;
22794  n165 = n68*n74;
22795  n166 = n52/n51;
22796  n167 = n1*n11*n117;
22797  n168 = n153*xF[13];
22798  n169 = n144*n50;
22799  n170 = n30*n34*n56;
22800  n171 = n30*n32*n54;
22801  n172 = n30*n45*n67;
22802  n173 = n30*n37*n59;
22803  n174 = n30*n31*n53;
22804  n175 = n30*n43*n65;
22805  n176 = n30*n40*n62;
22806  n177 = n102*n166 + 1;
22807  n178 = -n166*n50 + 1;
22808  n179 = pow(n177, -n21);
22809  n180 = n148 + n20 + n47 + n69;
22810  n181 = n1/n178;
22811  n182 = n50/n178;
22812  n183 = n181*n50;
22813  n184 = n166/n178;
22814  n185 = n166*n50/n177;
22815  n186 = n166*n182;
22816  n187 = n116*(n180 - log(n177)) + 1;
22817  n188 = n116*(n180 - log(n178)) + 1;
22818  n189 = pow(alpha, n0*n187);
22819  n190 = pow(alpha, n187*n4);
22820  n191 = pow(alpha, n187*n5);
22821  n192 = pow(alpha, n187*n6);
22822  n193 = pow(alpha, n187*n7);
22823  n194 = pow(alpha, n187*n8);
22824  n195 = pow(alpha, n187*n9);
22825  n196 = pow(alpha, n10*n187);
22826  n197 = pow(alpha, n11*n187);
22827  n198 = pow(alpha, n12*n187);
22828  n199 = pow(alpha, n13*n187);
22829  n200 = pow(alpha, n14*n187);
22830  n201 = pow(alpha, n15*n187);
22831  n202 = pow(alpha, n16*n187);
22832  n203 = pow(alpha, n17*n187);
22833  n204 = pow(alpha, n18*n187);
22834  n205 = pow(alpha, n187*n19);
22835  n206 = -1/n193;
22836  n207 = n17/n203;
22837  n208 = -1/n192;
22838  n209 = -1/n202;
22839  n210 = -1/n190;
22840  n211 = n13/n199;
22841  n212 = n8/n194;
22842  n213 = -1/n195;
22843  n214 = n18/n204;
22844  n215 = -1/n196;
22845  n216 = -1/n191;
22846  n217 = n5/n191;
22847  n218 = n14/n200;
22848  n219 = -1/n201;
22849  n220 = n11/n197;
22850  n221 = -1/n205;
22851  n222 = n12/n198;
22852  n223 = -1/n199;
22853  n224 = -1/n189;
22854  n225 = n9/n195;
22855  n226 = n6/n192;
22856  n227 = -1/n204;
22857  n228 = n4/n190;
22858  n229 = -1/n197;
22859  n230 = n15/n201;
22860  n231 = n19/n205;
22861  n232 = -1/n203;
22862  n233 = n10/n196;
22863  n234 = pow(alpha, n187*n22) + n81 - 1;
22864  n235 = n82 - 1 + 1.0/n190;
22865  n236 = n86 - 1 + 1.0/n191;
22866  n237 = n87 - 1 + 1.0/n192;
22867  n238 = n88 - 1 + 1.0/n193;
22868  n239 = n89 - 1 + 1.0/n194;
22869  n240 = n90 - 1 + 1.0/n195;
22870  n241 = n91 - 1 + 1.0/n196;
22871  n242 = n92 - 1 + 1.0/n197;
22872  n243 = n93 - 1 + 1.0/n198;
22873  n244 = n94 - 1 + 1.0/n199;
22874  n245 = n95 - 1 + 1.0/n200;
22875  n246 = n96 - 1 + 1.0/n201;
22876  n247 = n97 - 1 + 1.0/n202;
22877  n248 = n98 - 1 + 1.0/n203;
22878  n249 = n99 - 1 + 1.0/n204;
22879  n250 = n100 - 1 + 1.0/n205;
22880  n251 = -n224 + n81 - 1;
22881  n252 = -n210 + n82 - 1;
22882  n253 = -n216 + n86 - 1;
22883  n254 = -n208 + n87 - 1;
22884  n255 = -n206 + n88 - 1;
22885  n256 = n239;
22886  n257 = -n213 + n90 - 1;
22887  n258 = -n215 + n91 - 1;
22888  n259 = -n229 + n92 - 1;
22889  n260 = n243;
22890  n261 = -n223 + n94 - 1;
22891  n262 = n245;
22892  n263 = -n219 + n96 - 1;
22893  n264 = -n209 + n97 - 1;
22894  n265 = -n232 + n98 - 1;
22895  n266 = -n227 + n99 - 1;
22896  n267 = n100 - n221 - 1;
22897  n268 = pow(n234, -n21);
22898  n269 = pow(n235, -n21);
22899  n270 = pow(n236, -n21);
22900  n271 = pow(n237, -n21);
22901  n272 = pow(n238, -n21);
22902  n273 = pow(n239, -n21);
22903  n274 = pow(n240, -n21);
22904  n275 = pow(n241, -n21);
22905  n276 = pow(n242, -n21);
22906  n277 = pow(n243, -n21);
22907  n278 = pow(n244, -n21);
22908  n279 = pow(n245, -n21);
22909  n280 = pow(n246, -n21);
22910  n281 = pow(n247, -n21);
22911  n282 = pow(n248, -n21);
22912  n283 = pow(n249, -n21);
22913  n284 = pow(n250, -n21);
22914  n285 = pow(n234, 3);
22915  n286 = pow(n235, 3);
22916  n287 = pow(n236, 3);
22917  n288 = pow(n237, 3);
22918  n289 = pow(n238, 3);
22919  n290 = pow(n239, 3);
22920  n291 = pow(n240, 3);
22921  n292 = pow(n241, 3);
22922  n293 = pow(n242, 3);
22923  n294 = pow(n243, 3);
22924  n295 = pow(n244, 3);
22925  n296 = pow(n245, 3);
22926  n297 = pow(n246, 3);
22927  n298 = pow(n247, 3);
22928  n299 = pow(n248, 3);
22929  n300 = pow(n249, 3);
22930  n301 = pow(n250, 3);
22931  n302 = pow(n251, -n21);
22932  n303 = xF[11]/n236;
22933  n304 = xF[0]/n234;
22934  n305 = xF[10]/n235;
22935  n306 = xF[13]/n238;
22936  n307 = xF[8]/n249;
22937  n308 = xF[16]/n241;
22938  n309 = xF[6]/n247;
22939  n310 = xF[3]/n244;
22940  n311 = xF[3]/n278;
22941  n312 = xF[10]/n269;
22942  n313 = xF[0]/n251;
22943  n314 = n1/n268;
22944  n315 = n1*n313;
22945  n316 = n64*xF[5]/n246;
22946  n317 = n119/n243;
22947  n318 = n118/n240;
22948  n319 = n57*xF[14]/n239;
22949  n320 = n30*n44/n248;
22950  n321 = n86/n287;
22951  n322 = n86/n270;
22952  n323 = n95/n296;
22953  n324 = n81/n268;
22954  n325 = n133/n280;
22955  n326 = n98*xF[7]/n299;
22956  n327 = n140/n276;
22957  n328 = n95*xF[4]/n279;
22958  n329 = n98*xF[7]/n282;
22959  n330 = n99*xF[8]/n283;
22960  n331 = 1/(n177*n189);
22961  n332 = n115*n30*n46/n250;
22962  n333 = n30*n41*n63*xF[4]/n245;
22963  n334 = n1*n22*n304*n50*n70;
22964  n335 = n169*n304*n70;
22965  n336 = n174*n305*n70;
22966  n337 = n171*n303*n70;
22967  n338 = n112*n142*n70/n237;
22968  n339 = n170*n306*n70;
22969  n340 = n145*n319*n70;
22970  n341 = n136*n318*n70;
22971  n342 = n173*n308*n70;
22972  n343 = n117*n139*n70/n242;
22973  n344 = n137*n317*n70;
22974  n345 = n176*n310*n70;
22975  n346 = n333*n70;
22976  n347 = n125*n316*n70;
22977  n348 = n175*n309*n70;
22978  n349 = n113*n320*n70;
22979  n350 = n172*n307*n70;
22980  n351 = n332*n70;
22981  n352 = 0.5*n335;
22982  n353 = n166*n331 + 1;
22983  n354 = n149*n166*n331 + n149;
22984  n355 = n1*n185*n228 + n150;
22985  n356 = n151 + n185*n73/n191;
22986  n357 = n152 + n185*n71/n192;
22987  n358 = n153 + n185*n79/n193;
22988  n359 = n1*n185*n212 + n154;
22989  n360 = n155 + n185*n78/n195;
22990  n361 = n1*n185*n233 + n156;
22991  n362 = n1*n185*n220 + n157;
22992  n363 = n158 + n185*n76/n198;
22993  n364 = n1*n185*n211 + n159;
22994  n365 = n160 + n185*n75/n200;
22995  n366 = n161 + n185*n72/n201;
22996  n367 = n162 + n185*n77/n202;
22997  n368 = n163 + n185*n80/n203;
22998  n369 = n1*n185*n214 + n164;
22999  n370 = n165 + n185*n74/n205;
23000  n371 = pow(n354, -n21);
23001  n372 = pow(n355, -n21);
23002  n373 = pow(n356, -n21);
23003  n374 = pow(n357, -n21);
23004  n375 = pow(n358, -n21);
23005  n376 = pow(n359, -n21);
23006  n377 = pow(n360, -n21);
23007  n378 = pow(n361, -n21);
23008  n379 = pow(n362, -n21);
23009  n380 = pow(n363, -n21);
23010  n381 = pow(n364, -n21);
23011  n382 = pow(n365, -n21);
23012  n383 = pow(n366, -n21);
23013  n384 = pow(n367, -n21);
23014  n385 = pow(n368, -n21);
23015  n386 = pow(n369, -n21);
23016  n387 = pow(n370, -n21);
23017  n388 = pow(alpha, n188*n22)*n149*n184 + n149;
23018  n389 = n354*xF[0];
23019  n390 = n356*xF[11];
23020  n391 = n365*xF[4];
23021  n392 = n369*xF[8];
23022  n393 = n1*n185*n21*n22/n189 + n1*n21*n22*n50;
23023  n394 = n373*xF[11];
23024  n395 = n382*xF[4];
23025  n396 = n102*n144*n166*n331 + n102*n144;
23026  n397 = n364*n94;
23027  n398 = n355*n82;
23028  n399 = n357/n271;
23029  n400 = n363/n277;
23030  n401 = n370/n284;
23031  n402 = n358/n272;
23032  n403 = n359/n273;
23033  n404 = n360/n274;
23034  n405 = n361/n275;
23035  n406 = n387/n301;
23036  n407 = n384/n298;
23037  n408 = n377/n291;
23038  n409 = n375/n289;
23039  n410 = n376/n290;
23040  n411 = n380/n294;
23041  n412 = n374/n288;
23042  n413 = n383/n297;
23043  n414 = n378/n292;
23044  n415 = n379/n293;
23045  n416 = n393/n285;
23046  n417 = n381*n94*xF[3]/n295;
23047  n418 = n386*n99*xF[8]/n300;
23048  n419 = n147*n371/n285;
23049  n420 = n372*n82*xF[10]/n286;
23050  n421 = n135*n388/n302;
23051  n422 = n21*n22*n314*n50*n70*xF[0]*(pow(alpha, NP0*n0 + n187*n22)*n0*n1*n166/n177 + n149);
23052  n423 = n129*n312*n48*n70*(pow(alpha, NP0*n0 - n187*n4)*n1*n166*n4/n177 + n150);
23053  n424 = n48*n5*n54*n70*xF[11]*(pow(alpha, NP0*n0 - n187*n5)*n166*n73/n177 + n151)/n270;
23054  n425 = n112*n48*n6*n70*(pow(alpha, NP0*n0 - n187*n6)*n166*n71/n177 + n152)/n271;
23055  n426 = n143*n48*n70*xF[13]*(pow(alpha, NP0*n0 - n187*n7)*n166*n79/n177 + n153)/n272;
23056  n427 = n128*n48*n70*xF[14]*(pow(alpha, NP0*n0 - n187*n8)*n1*n166*n8/n177 + n154)/n273;
23057  n428 = n118*n48*n70*n9*(pow(alpha, NP0*n0 - n187*n9)*n166*n78/n177 + n155)/n274;
23058  n429 = n138*n48*n70*xF[16]*(pow(alpha, NP0*n0 - n10*n187)*n1*n10*n166/n177 + n156)/n275;
23059  n430 = n11*n117*n48*n70*(pow(alpha, NP0*n0 - n11*n187)*n1*n11*n166/n177 + n157)/n276;
23060  n431 = n119*n12*n48*n70*(pow(alpha, NP0*n0 - n12*n187)*n166*n76/n177 + n158)/n277;
23061  n432 = n121*n311*n48*n70*(pow(alpha, NP0*n0 - n13*n187)*n1*n13*n166/n177 + n159);
23062  n433 = n126*n48*n70*xF[4]*(pow(alpha, NP0*n0 - n14*n187)*n166*n75/n177 + n160)/n279;
23063  n434 = n15*n48*n64*n70*xF[5]*(pow(alpha, NP0*n0 - n15*n187)*n166*n72/n177 + n161)/n280;
23064  n435 = n16*n48*n65*n70*xF[6]*(pow(alpha, NP0*n0 - n16*n187)*n166*n77/n177 + n162)/n281;
23065  n436 = n113*n17*n48*n70*(pow(alpha, NP0*n0 - n17*n187)*n166*n80/n177 + n163)/n282;
23066  n437 = n146*n48*n70*xF[8]*(pow(alpha, NP0*n0 - n18*n187)*n1*n166*n18/n177 + n164)/n283;
23067  n438 = n115*n19*n48*n70*(pow(alpha, NP0*n0 - n187*n19)*n166*n74/n177 + n165)/n284;
23068  n439 = 1.0*n149*n389*n70/n268;
23069  n440 = n147*n396*n70/n268;
23070  n441 = 0.5*n440;
23071  n442 = pow(alpha, n0*n25)*n114*n228*n85/(n179*n84) + pow(alpha, n0*n25)*n210*n30*n31*n85/(n179*n84) + n114*n185*n228 + n174;
23072  n443 = pow(alpha, n0*n25)*n114*n217*n85/(n179*n84) + pow(alpha, n0*n25)*n216*n30*n32*n85/(n179*n84) + n114*n185*n217 + n171;
23073  n444 = pow(alpha, n0*n25)*n114*n226*n85/(n179*n84) + pow(alpha, n0*n25)*n142*n208*n85/(n179*n84) + n114*n185*n226 + n142*n55;
23074  n445 = pow(alpha, n0*n25)*n22*n30*n7*n85/(n179*n193*n84) + pow(alpha, n0*n25)*n30*n34*n85/(n179*n193*n84) + n104*n30*n34 + n185*n22*n30*n7/n193;
23075  n446 = pow(alpha, n0*n25)*n145*n85/(n179*n194*n84) + pow(alpha, n0*n25)*n212*n22*n30*n85/(n179*n84) + n105*n145 + n185*n212*n22*n30;
23076  n447 = pow(alpha, n0*n25)*n114*n225*n85/(n179*n84) + pow(alpha, n0*n25)*n136*n213*n85/(n179*n84) + n114*n185*n225 + n136*n58;
23077  n448 = pow(alpha, n0*n25)*n22*n233*n30*n85/(n179*n84) + pow(alpha, n0*n25)*n30*n37*n85/(n179*n196*n84) + n106*n30*n37 + n185*n22*n233*n30;
23078  n449 = pow(alpha, n0*n25)*n137*n85/(n179*n198*n84) + pow(alpha, n0*n25)*n22*n222*n30*n85/(n179*n84) + n107*n137 + n185*n22*n222*n30;
23079  n450 = pow(alpha, n0*n25)*n114*n211*n85/(n179*n84) + pow(alpha, n0*n25)*n223*n30*n40*n85/(n179*n84) + n114*n185*n211 + n176;
23080  n451 = pow(alpha, n0*n25)*n16*n22*n30*n85/(n179*n202*n84) + pow(alpha, n0*n25)*n30*n43*n85/(n179*n202*n84) + n110*n30*n43 + n16*n185*n22*n30/n202;
23081  n452 = pow(alpha, n0*n25)*n114*n231*n85/(n179*n84) + pow(alpha, n0*n25)*n221*n30*n46*n85/(n179*n84) + n114*n185*n231 + n30*n46*n68;
23082  n453 = n134*n70*(pow(alpha, n0*n25 - n187*n7)*n22*n30*n7*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n7)*n30*n34*n85/(n179*n84) + n104*n30*n34 + n185*n22*n30*n7/n193)/n272;
23083  n454 = n131*n70*(pow(alpha, n0*n25 - n187*n8)*n145*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n8)*n22*n30*n8*n85/(n179*n84) + n105*n145 + n185*n212*n22*n30)/n273;
23084  n455 = n120*n70*(pow(alpha, n0*n25 - n10*n187)*n10*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n10*n187)*n30*n37*n85/(n179*n84) + n106*n30*n37 + n185*n22*n233*n30)/n275;
23085  n456 = n132*n70*(pow(alpha, n0*n25 - n12*n187)*n12*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n12*n187)*n137*n85/(n179*n84) + n107*n137 + n185*n22*n222*n30)/n277;
23086  n457 = n328*n70*(pow(alpha, n0*n25 - n14*n187)*n14*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n14*n187)*n30*n41*n85/(n179*n84) + n108*n30*n41 + n185*n218*n22*n30);
23087  n458 = n130*n70*(pow(alpha, n0*n25 - n16*n187)*n16*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n16*n187)*n30*n43*n85/(n179*n84) + n110*n30*n43 + n16*n185*n22*n30/n202)/n281;
23088  n459 = n111*n312*n82*(pow(alpha, n0*n25 - n187*n4)*n114*n4*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n4)*n30*n31*n85/(n179*n84) + n114*n185*n228 + n174);
23089  n460 = n111*n322*xF[11]*(pow(alpha, n0*n25 - n187*n5)*n114*n5*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n5)*n30*n32*n85/(n179*n84) + n114*n185*n217 + n171);
23090  n461 = n111*n123*(pow(alpha, n0*n25 - n187*n6)*n114*n6*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n6)*n142*n85/(n179*n84) + n114*n185*n226 + n142*n55)/n271;
23091  n462 = n111*n122*(pow(alpha, n0*n25 - n187*n9)*n114*n85*n9/(n179*n84) - pow(alpha, n0*n25 - n187*n9)*n136*n85/(n179*n84) + n114*n185*n225 + n136*n58)/n274;
23092  n463 = n111*n327*(pow(alpha, n0*n25 - n11*n187)*n11*n114*n85/(n179*n84) - pow(alpha, n0*n25 - n11*n187)*n139*n85/(n179*n84) + n114*n185*n220 + n139*n60);
23093  n464 = n111*n311*n94*(pow(alpha, n0*n25 - n13*n187)*n114*n13*n85/(n179*n84) - pow(alpha, n0*n25 - n13*n187)*n30*n40*n85/(n179*n84) + n114*n185*n211 + n176);
23094  n465 = n111*n325*(pow(alpha, n0*n25 - n15*n187)*n114*n15*n85/(n179*n84) - pow(alpha, n0*n25 - n15*n187)*n125*n85/(n179*n84) + n114*n185*n230 + n125*n64);
23095  n466 = n111*n329*(pow(alpha, n0*n25 - n17*n187)*n114*n17*n85/(n179*n84) - pow(alpha, n0*n25 - n17*n187)*n30*n44*n85/(n179*n84) + n114*n185*n207 + n30*n44*n66);
23096  n467 = n111*n330*(pow(alpha, n0*n25 - n18*n187)*n114*n18*n85/(n179*n84) - pow(alpha, n0*n25 - n18*n187)*n30*n45*n85/(n179*n84) + n114*n185*n214 + n172);
23097  n468 = n111*n127*(pow(alpha, n0*n25 - n187*n19)*n114*n19*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n19)*n30*n46*n85/(n179*n84) + n114*n185*n231 + n30*n46*n68)/n284;
23098  n469 = n335 + n336 + n337 + n338 + n339 + n340 + n341 + n342 + n343 + n344 + n345 + n346 + n347 + n348 + n349 + n350 + n351 + n422 + n423 + n424 + n425 + n426 + n427 + n428 + n429 + n430 + n431 + n432 + n433 + n434 + n435 + n436 + n437 + n438 + n440 + n453 + n454 + n455 + n456 + n457 + n458 + n459 + n460 + n461 + n462 + n463 + n464 + n465 + n466 + n467 + n468;
23099  n470 = n111*n120*n361*(n138*n48 + n185*n233*n48)/n292 + n111*n122*n360*(n185*n225*n48 + n48*n58*n9)/n291 + n111*n123*n357*(n185*n226*n48 + n48*n55*n6)/n288 + n111*n127*n370*(n185*n231*n48 + n19*n48*n68)/n301 + n111*n130*n367*(n16*n185*n48/n202 + n16*n48*n65)/n298 + n111*n131*n359*(n128*n48 + n185*n212*n48)/n290 + n111*n132*n363*(n12*n48*n61 + n185*n222*n48)/n294 + n111*n133*n366*(n15*n48*n64 + n185*n230*n48)/n297 + n111*n134*n358*(n143*n48 + n185*n48*n7/n193)/n289 + n111*n140*n362*(n141*n48 + n185*n220*n48)/n293 + n111*n147*n354*n416 + n111*n321*n390*(n185*n217*n48 + n48*n5*n54) + n111*n323*n391*(n126*n48 + n185*n218*n48) + n111*n326*n368*(n17*n48*n66 + n185*n207*n48) + n111*n392*n99*(n146*n48 + n185*n214*n48)/n300 + n111*n397*xF[3]*(n121*n48 + n185*n211*n48)/n295 + n111*n398*xF[10]*(n129*n48 + n185*n228*n48)/n286 + n469;
23100  n471 = n470*xTj;
23101  NP_b = -n147*n149*n353*n70/n268 - n25*(0.5*n147*n70*(pow(alpha, NP0*n0 - n0*n187)*n144*(-n23 + xPj*xTj)/(n177*n51) + n102*n144)/n268 + 1.0*n149*n70*xF[0]*(pow(alpha, NP0*n0 - n0*n187)*n0*n1*n166/n177 + n149)/n268 + n352 - 1.0*n419*n70 - 0.5*xTj*(n111*n122*(pow(alpha, NP0*n0 - n187*n9)*n114*n166*n9/n177 + pow(alpha, n0*n25 - n187*n9)*n114*n85*n9/(n179*n84) - pow(alpha, n0*n25 - n187*n9)*n136*n85/(n179*n84) + n136*n58)/n274 + n111*n123*(pow(alpha, NP0*n0 - n187*n6)*n114*n166*n6/n177 + pow(alpha, n0*n25 - n187*n6)*n114*n6*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n6)*n142*n85/(n179*n84) + n142*n55)/n271 + n111*n127*(pow(alpha, NP0*n0 - n187*n19)*n114*n166*n19/n177 + pow(alpha, n0*n25 - n187*n19)*n114*n19*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n19)*n30*n46*n85/(n179*n84) + n30*n46*n68)/n284 + n111*n311*n94*(pow(alpha, NP0*n0 - n13*n187)*n114*n13*n166/n177 + pow(alpha, n0*n25 - n13*n187)*n114*n13*n85/(n179*n84) - pow(alpha, n0*n25 - n13*n187)*n30*n40*n85/(n179*n84) + n176) + n111*n312*n82*(pow(alpha, NP0*n0 - n187*n4)*n114*n166*n4/n177 + pow(alpha, n0*n25 - n187*n4)*n114*n4*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n4)*n30*n31*n85/(n179*n84) + n174) + n111*n322*xF[11]*(pow(alpha, NP0*n0 - n187*n5)*n114*n166*n5/n177 + pow(alpha, n0*n25 - n187*n5)*n114*n5*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n5)*n30*n32*n85/(n179*n84) + n171) + n111*n325*(pow(alpha, NP0*n0 - n15*n187)*n114*n15*n166/n177 + pow(alpha, n0*n25 - n15*n187)*n114*n15*n85/(n179*n84) - pow(alpha, n0*n25 - n15*n187)*n125*n85/(n179*n84) + n125*n64) + n111*n327*(pow(alpha, NP0*n0 - n11*n187)*n11*n114*n166/n177 + pow(alpha, n0*n25 - n11*n187)*n11*n114*n85/(n179*n84) - pow(alpha, n0*n25 - n11*n187)*n139*n85/(n179*n84) + n139*n60) + n111*n329*(pow(alpha, NP0*n0 - n17*n187)*n114*n166*n17/n177 + pow(alpha, n0*n25 - n17*n187)*n114*n17*n85/(n179*n84) - pow(alpha, n0*n25 - n17*n187)*n30*n44*n85/(n179*n84) + n30*n44*n66) + n111*n330*(pow(alpha, NP0*n0 - n18*n187)*n114*n166*n18/n177 + pow(alpha, n0*n25 - n18*n187)*n114*n18*n85/(n179*n84) - pow(alpha, n0*n25 - n18*n187)*n30*n45*n85/(n179*n84) + n172) + n120*n21*n414*n70 + n120*n70*(pow(alpha, NP0*n0 - n10*n187)*n10*n166*n22*n30/n177 + pow(alpha, n0*n25 - n10*n187)*n10*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n10*n187)*n30*n37*n85/(n179*n84) + n106*n30*n37)/n275 + n122*n21*n408*n70 + n123*n21*n412*n70 + n127*n21*n406*n70 + n130*n21*n407*n70 + n130*n70*(pow(alpha, NP0*n0 - n16*n187)*n16*n166*n22*n30/n177 + pow(alpha, n0*n25 - n16*n187)*n16*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n16*n187)*n30*n43*n85/(n179*n84) + n110*n30*n43)/n281 + n131*n21*n410*n70 + n131*n70*(pow(alpha, NP0*n0 - n187*n8)*n166*n22*n30*n8/n177 + pow(alpha, n0*n25 - n187*n8)*n145*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n8)*n22*n30*n8*n85/(n179*n84) + n105*n145)/n273 + n132*n21*n411*n70 + n132*n70*(pow(alpha, NP0*n0 - n12*n187)*n12*n166*n22*n30/n177 + pow(alpha, n0*n25 - n12*n187)*n12*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n12*n187)*n137*n85/(n179*n84) + n107*n137)/n277 + n133*n21*n413*n70 + n134*n21*n409*n70 + n134*n70*(pow(alpha, NP0*n0 - n187*n7)*n166*n22*n30*n7/n177 + pow(alpha, n0*n25 - n187*n7)*n22*n30*n7*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n7)*n30*n34*n85/(n179*n84) + n104*n30*n34)/n272 + n140*n21*n415*n70 + n147*n70*(pow(alpha, NP0*n0 - n0*n187)*n144*(-n23 + xPj*xTj)/(n177*n51) + n102*n144)/n268 + n21*n321*n394*n70 + n21*n323*n395*n70 + n21*n326*n385*n70 + n21*n417*n70 + n21*n418*n70 + n21*n419*n70 + n21*n420*n70 + n328*n70*(pow(alpha, NP0*n0 - n14*n187)*n14*n166*n22*n30/n177 + pow(alpha, n0*n25 - n14*n187)*n14*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n14*n187)*n30*n41*n85/(n179*n84) + n108*n30*n41) + n335 + n336 + n337 + n338 + n339 + n340 + n341 + n342 + n343 + n344 + n345 + n346 + n347 + n348 + n349 + n350 + n351 + n422 + n423 + n424 + n425 + n426 + n427 + n428 + n429 + n430 + n431 + n432 + n433 + n434 + n435 + n436 + n437 + n438)) - n334 - n70*xTj*(n112*n71/n237 + n113*n80/n248 + n115*n74/n250 - n120*n405 - n122*n404 - n123*n399 + n126*n49/n245 - n127*n401 - n130*n367/n281 - n131*n403 - n132*n400 - n134*n402 - n147*n354/n268 + n149*n304 + n150*n305 + n151*n303 + n154*xF[14]/n239 + n156*n308 + n159*n310 + n161*xF[5]/n246 + n162*n309 + n164*n307 + n167/n242 + n168/n238 - n311*n397 - n312*n398 + n317*n76 + n318*n78 - n322*n390 - n325*n366 - n327*n362 - n328*n365 - n329*n368 - n330*n369);
23102  NP_2a = -n70*(-pow(alpha, n0*n25)*n144*n147*n21*pow(n353, -n21)/n285 - 2.0*pow(alpha, n0*n25)*n144*n353*xF[0]/n268 + n102*n144*n147*(n331*(-n23 + xPj*xTj)/n51 - 1)/n268 - 1.0*n169*n304 + 1.0*xTj*(n11*n117*n48*(pow(alpha, NP0*n0 - n11*n187)*n1*n11*n166/n177 + n157)/n276 + n112*n142/n237 + n112*n48*n6*(pow(alpha, NP0*n0 - n187*n6)*n166*n71/n177 + n152)/n271 + n113*n17*n48*(pow(alpha, NP0*n0 - n17*n187)*n166*n80/n177 + n163)/n282 + n113*n320 + n115*n19*n48*(pow(alpha, NP0*n0 - n187*n19)*n166*n74/n177 + n165)/n284 + n117*n139/n242 + n118*n48*n9*(pow(alpha, NP0*n0 - n187*n9)*n166*n78/n177 + n155)/n274 + n119*n12*n48*(pow(alpha, NP0*n0 - n12*n187)*n166*n76/n177 + n158)/n277 + n120*n21*n414 + n120*(pow(alpha, n0*n25 - n10*n187)*n10*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n10*n187)*n30*n37*n85/(n179*n84) + n106*n30*n37 + n185*n22*n233*n30)/n275 + n121*n311*n48*(pow(alpha, NP0*n0 - n13*n187)*n1*n13*n166/n177 + n159) + n122*n21*n408 - n122*(pow(alpha, n0*n25 - n187*n9)*n114*n85*n9/(n179*n84) - pow(alpha, n0*n25 - n187*n9)*n136*n85/(n179*n84) + n114*n185*n225 + n136*n58)/n274 + n123*n21*n412 - n123*(pow(alpha, n0*n25 - n187*n6)*n114*n6*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n6)*n142*n85/(n179*n84) + n114*n185*n226 + n142*n55)/n271 + n125*n316 + n126*n48*xF[4]*(pow(alpha, NP0*n0 - n14*n187)*n166*n75/n177 + n160)/n279 + n127*n21*n406 - n127*(pow(alpha, n0*n25 - n187*n19)*n114*n19*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n19)*n30*n46*n85/(n179*n84) + n114*n185*n231 + n30*n46*n68)/n284 + n128*n48*xF[14]*(pow(alpha, NP0*n0 - n187*n8)*n1*n166*n8/n177 + n154)/n273 + n129*n312*n48*(pow(alpha, NP0*n0 - n187*n4)*n1*n166*n4/n177 + n150) + n130*n21*n407 + n130*(pow(alpha, n0*n25 - n16*n187)*n16*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n16*n187)*n30*n43*n85/(n179*n84) + n110*n30*n43 + n16*n185*n22*n30/n202)/n281 + n131*n21*n410 + n131*(pow(alpha, n0*n25 - n187*n8)*n145*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n8)*n22*n30*n8*n85/(n179*n84) + n105*n145 + n185*n212*n22*n30)/n273 + n132*n21*n411 + n132*(pow(alpha, n0*n25 - n12*n187)*n12*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n12*n187)*n137*n85/(n179*n84) + n107*n137 + n185*n22*n222*n30)/n277 + n133*n21*n413 + n134*n21*n409 + n134*(pow(alpha, n0*n25 - n187*n7)*n22*n30*n7*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n7)*n30*n34*n85/(n179*n84) + n104*n30*n34 + n185*n22*n30*n7/n193)/n272 + n136*n318 + n137*n317 + n138*n48*xF[16]*(pow(alpha, NP0*n0 - n10*n187)*n1*n10*n166/n177 + n156)/n275 + n140*n21*n415 + n143*n48*xF[13]*(pow(alpha, NP0*n0 - n187*n7)*n166*n79/n177 + n153)/n272 + n145*n319 + n146*n48*xF[8]*(pow(alpha, NP0*n0 - n18*n187)*n1*n166*n18/n177 + n164)/n283 + n147*n396/n268 + n15*n48*n64*xF[5]*(pow(alpha, NP0*n0 - n15*n187)*n166*n72/n177 + n161)/n280 + n16*n48*n65*xF[6]*(pow(alpha, NP0*n0 - n16*n187)*n166*n77/n177 + n162)/n281 + n169*n304 + n170*n306 + n171*n303 + n172*n307 + n173*n308 + n174*n305 + n175*n309 + n176*n310 + n21*n22*n314*n50*xF[0]*(pow(alpha, NP0*n0 + n187*n22)*n0*n1*n166/n177 + n149) + n21*n321*n394 + n21*n323*n395 + n21*n326*n385 + n21*n417 + n21*n418 + n21*n419 + n21*n420 - n311*n94*(pow(alpha, n0*n25 - n13*n187)*n114*n13*n85/(n179*n84) - pow(alpha, n0*n25 - n13*n187)*n30*n40*n85/(n179*n84) + n114*n185*n211 + n176) - n312*n82*(pow(alpha, n0*n25 - n187*n4)*n114*n4*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n4)*n30*n31*n85/(n179*n84) + n114*n185*n228 + n174) - n322*xF[11]*(pow(alpha, n0*n25 - n187*n5)*n114*n5*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n5)*n30*n32*n85/(n179*n84) + n114*n185*n217 + n171) - n325*(pow(alpha, n0*n25 - n15*n187)*n114*n15*n85/(n179*n84) - pow(alpha, n0*n25 - n15*n187)*n125*n85/(n179*n84) + n114*n185*n230 + n125*n64) - n327*(pow(alpha, n0*n25 - n11*n187)*n11*n114*n85/(n179*n84) - pow(alpha, n0*n25 - n11*n187)*n139*n85/(n179*n84) + n114*n185*n220 + n139*n60) + n328*(pow(alpha, n0*n25 - n14*n187)*n14*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n14*n187)*n30*n41*n85/(n179*n84) + n108*n30*n41 + n185*n218*n22*n30) - n329*(pow(alpha, n0*n25 - n17*n187)*n114*n17*n85/(n179*n84) - pow(alpha, n0*n25 - n17*n187)*n30*n44*n85/(n179*n84) + n114*n185*n207 + n30*n44*n66) - n330*(pow(alpha, n0*n25 - n18*n187)*n114*n18*n85/(n179*n84) - pow(alpha, n0*n25 - n18*n187)*n30*n45*n85/(n179*n84) + n114*n185*n214 + n172) + n332 + n333 + n48*n5*n54*xF[11]*(pow(alpha, NP0*n0 - n187*n5)*n166*n73/n177 + n151)/n270));
23103  NP_sqrt_base = (-NP0*(n22*n315*n50*n70 + n421*n70 + xTj*(n100*n111*pow(n267, n21)*xF[9]*(n165 + pow(alpha, -n188*n19)*n186*n74) + n111*pow(n252, n21)*n82*xF[10]*(n150 + pow(alpha, -n188*n4)*n166*n183*n4) + n111*pow(n253, n21)*n86*xF[11]*(n151 + pow(alpha, -n188*n5)*n186*n73) + n111*pow(n254, n21)*n87*xF[12]*(n152 + pow(alpha, -n188*n6)*n186*n71) + n111*pow(n255, n21)*n88*xF[13]*(n153 + pow(alpha, -n188*n7)*n186*n79) + n111*pow(n256, n21)*n89*xF[14]*(n154 + pow(alpha, -n188*n8)*n166*n183*n8) + n111*pow(n257, n21)*n90*xF[15]*(n155 + pow(alpha, -n188*n9)*n186*n78) + n111*pow(n258, n21)*n91*xF[16]*(n156 + pow(alpha, -n10*n188)*n10*n166*n183) + n111*pow(n259, n21)*n92*xF[1]*(n157 + pow(alpha, -n11*n188)*n11*n166*n183) + n111*pow(n260, n21)*n93*xF[2]*(n158 + pow(alpha, -n12*n188)*n186*n76) + n111*pow(n261, n21)*n94*xF[3]*(n159 + pow(alpha, -n13*n188)*n13*n166*n183) + n111*pow(n262, n21)*n95*xF[4]*(n160 + pow(alpha, -n14*n188)*n186*n75) + n111*pow(n263, n21)*n96*xF[5]*(n161 + pow(alpha, -n15*n188)*n186*n72) + n111*pow(n264, n21)*n97*xF[6]*(n162 + pow(alpha, -n16*n188)*n186*n77) + n111*pow(n265, n21)*n98*xF[7]*(n163 + pow(alpha, -n17*n188)*n186*n80) + n111*pow(n266, n21)*n99*xF[8]*(n164 + pow(alpha, -n18*n188)*n166*n18*n183) + n111*n421 + n112*n70*n71/n254 + n113*n70*n80/n265 + n115*n70*n74/n267 + n118*n70*n78/n257 + n119*n70*n76/n260 + n126*n49*n70/n262 + n149*n313*n70 + n150*n70*xF[10]/n252 + n151*n70*xF[11]/n253 + n154*n70*xF[14]/n256 + n156*n70*xF[16]/n258 + n159*n70*xF[3]/n261 + n161*n70*xF[5]/n263 + n162*n70*xF[6]/n264 + n164*n70*xF[8]/n266 + n167*n70/n259 + n168*n70/n255)) - n111*n135/n251 - n26*(-n120*n70/(n91 - 1 + pow(alpha, -n10*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n122*n70/(n90 - 1 + pow(alpha, -n9*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n123*n70/(n87 - 1 + pow(alpha, -n6*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n127*n70/(n100 - 1 + pow(alpha, -n19*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n130*n70/(n97 - 1 + pow(alpha, -n16*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n131*n70/(n89 - 1 + pow(alpha, -n8*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n132*n70/(n93 - 1 + pow(alpha, -n12*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n133*n70/(n96 - 1 + pow(alpha, -n15*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n134*n70/(n88 - 1 + pow(alpha, -n7*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n140*n70/(n92 - 1 + pow(alpha, -n11*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n147*n70/(pow(alpha, n22*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1)) + n81 - 1) - n70*n82*xF[10]/(n82 - 1 + pow(alpha, -n4*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n70*n86*xF[11]/(n86 - 1 + pow(alpha, -n5*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n70*n94*xF[3]/(n94 - 1 + pow(alpha, -n13*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n70*n95*xF[4]/(n95 - 1 + pow(alpha, -n14*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n70*n98*xF[7]/(n98 - 1 + pow(alpha, -n17*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1))) - n70*n99*xF[8]/(n99 - 1 + pow(alpha, -n18*(n116*(n180 - log(n102*(n23 + n27*xTj)/(n23 - xF[0]*xTj) + 1)) + 1)))) - pow(NP0, -n21)*(-0.5*n147*n354*n416*n70 + 1.0*n149*n389*n70/n268 + 0.5*n335 + 0.5*n440 - 0.5*n471))*(4.0*n149*n389*n70/n268 - n21*n26*(n111*n120*(pow(alpha, NP0*n0 - n10*n187)*n1*n10*n166/n177 + n156)*(pow(alpha, NP0*n0 - n10*n187)*n10*n166*n48/n177 + n138*n48)/n292 + n111*n122*(pow(alpha, NP0*n0 - n187*n9)*n166*n78/n177 + n155)*(pow(alpha, NP0*n0 - n187*n9)*n166*n48*n9/n177 + n48*n58*n9)/n291 + n111*n122*(pow(alpha, NP0*n0 - n187*n9)*n114*n166*n9/n177 + pow(alpha, n0*n25 - n187*n9)*n114*n85*n9/(n179*n84) - pow(alpha, n0*n25 - n187*n9)*n136*n85/(n179*n84) + n136*n58)/n274 + n111*n123*(pow(alpha, NP0*n0 - n187*n6)*n166*n71/n177 + n152)*(pow(alpha, NP0*n0 - n187*n6)*n166*n48*n6/n177 + n48*n55*n6)/n288 + n111*n123*(pow(alpha, NP0*n0 - n187*n6)*n114*n166*n6/n177 + pow(alpha, n0*n25 - n187*n6)*n114*n6*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n6)*n142*n85/(n179*n84) + n142*n55)/n271 + n111*n127*(pow(alpha, NP0*n0 - n187*n19)*n166*n74/n177 + n165)*(pow(alpha, NP0*n0 - n187*n19)*n166*n19*n48/n177 + n19*n48*n68)/n301 + n111*n127*(pow(alpha, NP0*n0 - n187*n19)*n114*n166*n19/n177 + pow(alpha, n0*n25 - n187*n19)*n114*n19*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n19)*n30*n46*n85/(n179*n84) + n30*n46*n68)/n284 + n111*n130*(pow(alpha, NP0*n0 - n16*n187)*n166*n77/n177 + n162)*(pow(alpha, NP0*n0 - n16*n187)*n16*n166*n48/n177 + n16*n48*n65)/n298 + n111*n131*(pow(alpha, NP0*n0 - n187*n8)*n1*n166*n8/n177 + n154)*(pow(alpha, NP0*n0 - n187*n8)*n166*n48*n8/n177 + n128*n48)/n290 + n111*n132*(pow(alpha, NP0*n0 - n12*n187)*n166*n76/n177 + n158)*(pow(alpha, NP0*n0 - n12*n187)*n12*n166*n48/n177 + n12*n48*n61)/n294 + n111*n133*(pow(alpha, NP0*n0 - n15*n187)*n166*n72/n177 + n161)*(pow(alpha, NP0*n0 - n15*n187)*n15*n166*n48/n177 + n15*n48*n64)/n297 + n111*n134*(pow(alpha, NP0*n0 - n187*n7)*n166*n79/n177 + n153)*(pow(alpha, NP0*n0 - n187*n7)*n166*n48*n7/n177 + n143*n48)/n289 + n111*n140*(pow(alpha, NP0*n0 - n11*n187)*n1*n11*n166/n177 + n157)*(pow(alpha, NP0*n0 - n11*n187)*n11*n166*n48/n177 + n141*n48)/n293 + n111*n147*(pow(alpha, NP0*n0 - n0*n187)*n0*n1*n166/n177 + n149)*(pow(alpha, NP0*n0 - n0*n187)*n1*n166*n21*n22/n177 + n1*n21*n22*n50)/n285 + n111*n311*n94*(pow(alpha, NP0*n0 - n13*n187)*n114*n13*n166/n177 + pow(alpha, n0*n25 - n13*n187)*n114*n13*n85/(n179*n84) - pow(alpha, n0*n25 - n13*n187)*n30*n40*n85/(n179*n84) + n176) + n111*n312*n82*(pow(alpha, NP0*n0 - n187*n4)*n114*n166*n4/n177 + pow(alpha, n0*n25 - n187*n4)*n114*n4*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n4)*n30*n31*n85/(n179*n84) + n174) + n111*n321*xF[11]*(pow(alpha, NP0*n0 - n187*n5)*n166*n73/n177 + n151)*(pow(alpha, NP0*n0 - n187*n5)*n166*n48*n5/n177 + n48*n5*n54) + n111*n322*xF[11]*(pow(alpha, NP0*n0 - n187*n5)*n114*n166*n5/n177 + pow(alpha, n0*n25 - n187*n5)*n114*n5*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n5)*n30*n32*n85/(n179*n84) + n171) + n111*n323*xF[4]*(pow(alpha, NP0*n0 - n14*n187)*n166*n75/n177 + n160)*(pow(alpha, NP0*n0 - n14*n187)*n14*n166*n48/n177 + n126*n48) + n111*n325*(pow(alpha, NP0*n0 - n15*n187)*n114*n15*n166/n177 + pow(alpha, n0*n25 - n15*n187)*n114*n15*n85/(n179*n84) - pow(alpha, n0*n25 - n15*n187)*n125*n85/(n179*n84) + n125*n64) + n111*n326*(pow(alpha, NP0*n0 - n17*n187)*n166*n80/n177 + n163)*(pow(alpha, NP0*n0 - n17*n187)*n166*n17*n48/n177 + n17*n48*n66) + n111*n327*(pow(alpha, NP0*n0 - n11*n187)*n11*n114*n166/n177 + pow(alpha, n0*n25 - n11*n187)*n11*n114*n85/(n179*n84) - pow(alpha, n0*n25 - n11*n187)*n139*n85/(n179*n84) + n139*n60) + n111*n329*(pow(alpha, NP0*n0 - n17*n187)*n114*n166*n17/n177 + pow(alpha, n0*n25 - n17*n187)*n114*n17*n85/(n179*n84) - pow(alpha, n0*n25 - n17*n187)*n30*n44*n85/(n179*n84) + n30*n44*n66) + n111*n330*(pow(alpha, NP0*n0 - n18*n187)*n114*n166*n18/n177 + pow(alpha, n0*n25 - n18*n187)*n114*n18*n85/(n179*n84) - pow(alpha, n0*n25 - n18*n187)*n30*n45*n85/(n179*n84) + n172) + n111*n99*xF[8]*(pow(alpha, NP0*n0 - n18*n187)*n1*n166*n18/n177 + n164)*(pow(alpha, NP0*n0 - n18*n187)*n166*n18*n48/n177 + n146*n48)/n300 + n111*n94*xF[3]*(pow(alpha, NP0*n0 - n13*n187)*n1*n13*n166/n177 + n159)*(pow(alpha, NP0*n0 - n13*n187)*n13*n166*n48/n177 + n121*n48)/n295 + n111*n82*xF[10]*(pow(alpha, NP0*n0 - n187*n4)*n1*n166*n4/n177 + n150)*(pow(alpha, NP0*n0 - n187*n4)*n166*n4*n48/n177 + n129*n48)/n286 + n120*n70*(pow(alpha, NP0*n0 - n10*n187)*n10*n166*n22*n30/n177 + pow(alpha, n0*n25 - n10*n187)*n10*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n10*n187)*n30*n37*n85/(n179*n84) + n106*n30*n37)/n275 + n130*n70*(pow(alpha, NP0*n0 - n16*n187)*n16*n166*n22*n30/n177 + pow(alpha, n0*n25 - n16*n187)*n16*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n16*n187)*n30*n43*n85/(n179*n84) + n110*n30*n43)/n281 + n131*n70*(pow(alpha, NP0*n0 - n187*n8)*n166*n22*n30*n8/n177 + pow(alpha, n0*n25 - n187*n8)*n145*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n8)*n22*n30*n8*n85/(n179*n84) + n105*n145)/n273 + n132*n70*(pow(alpha, NP0*n0 - n12*n187)*n12*n166*n22*n30/n177 + pow(alpha, n0*n25 - n12*n187)*n12*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n12*n187)*n137*n85/(n179*n84) + n107*n137)/n277 + n134*n70*(pow(alpha, NP0*n0 - n187*n7)*n166*n22*n30*n7/n177 + pow(alpha, n0*n25 - n187*n7)*n22*n30*n7*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n7)*n30*n34*n85/(n179*n84) + n104*n30*n34)/n272 + n147*n70*(pow(alpha, NP0*n0 - n0*n187)*n144*(-n23 + xPj*xTj)/(n177*n51) + n102*n144)/n268 + n328*n70*(pow(alpha, NP0*n0 - n14*n187)*n14*n166*n22*n30/n177 + pow(alpha, n0*n25 - n14*n187)*n14*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n14*n187)*n30*n41*n85/(n179*n84) + n108*n30*n41) + n335 + n336 + n337 + n338 + n339 + n340 + n341 + n342 + n343 + n344 + n345 + n346 + n347 + n348 + n349 + n350 + n351 + n422 + n423 + n424 + n425 + n426 + n427 + n428 + n429 + n430 + n431 + n432 + n433 + n434 + n435 + n436 + n437 + n438) + 2.0*n335 - 4.0*n419*n70 + 2.0*n440) + pow(-n147*n354*n70/n268 - n25*(-0.5*n147*n70*(pow(alpha, NP0*n0 - n0*n187)*n0*n1*n166/n177 + n149)*(pow(alpha, NP0*n0 - n0*n187)*n1*n166*n21*n22/n177 + n1*n21*n22*n50)/n285 + 0.5*n147*n70*(pow(alpha, NP0*n0 - n0*n187)*n144*(-n23 + xPj*xTj)/(n177*n51) + n102*n144)/n268 + 1.0*n149*n70*xF[0]*(pow(alpha, NP0*n0 - n0*n187)*n0*n1*n166/n177 + n149)/n268 + n352 - 0.5*xTj*(n111*n120*(pow(alpha, NP0*n0 - n10*n187)*n1*n10*n166/n177 + n156)*(pow(alpha, NP0*n0 - n10*n187)*n10*n166*n48/n177 + n138*n48)/n292 + n111*n122*(pow(alpha, NP0*n0 - n187*n9)*n166*n78/n177 + n155)*(pow(alpha, NP0*n0 - n187*n9)*n166*n48*n9/n177 + n48*n58*n9)/n291 + n111*n122*(pow(alpha, NP0*n0 - n187*n9)*n114*n166*n9/n177 + pow(alpha, n0*n25 - n187*n9)*n114*n85*n9/(n179*n84) - pow(alpha, n0*n25 - n187*n9)*n136*n85/(n179*n84) + n136*n58)/n274 + n111*n123*(pow(alpha, NP0*n0 - n187*n6)*n166*n71/n177 + n152)*(pow(alpha, NP0*n0 - n187*n6)*n166*n48*n6/n177 + n48*n55*n6)/n288 + n111*n123*(pow(alpha, NP0*n0 - n187*n6)*n114*n166*n6/n177 + pow(alpha, n0*n25 - n187*n6)*n114*n6*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n6)*n142*n85/(n179*n84) + n142*n55)/n271 + n111*n127*(pow(alpha, NP0*n0 - n187*n19)*n166*n74/n177 + n165)*(pow(alpha, NP0*n0 - n187*n19)*n166*n19*n48/n177 + n19*n48*n68)/n301 + n111*n127*(pow(alpha, NP0*n0 - n187*n19)*n114*n166*n19/n177 + pow(alpha, n0*n25 - n187*n19)*n114*n19*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n19)*n30*n46*n85/(n179*n84) + n30*n46*n68)/n284 + n111*n130*(pow(alpha, NP0*n0 - n16*n187)*n166*n77/n177 + n162)*(pow(alpha, NP0*n0 - n16*n187)*n16*n166*n48/n177 + n16*n48*n65)/n298 + n111*n131*(pow(alpha, NP0*n0 - n187*n8)*n1*n166*n8/n177 + n154)*(pow(alpha, NP0*n0 - n187*n8)*n166*n48*n8/n177 + n128*n48)/n290 + n111*n132*(pow(alpha, NP0*n0 - n12*n187)*n166*n76/n177 + n158)*(pow(alpha, NP0*n0 - n12*n187)*n12*n166*n48/n177 + n12*n48*n61)/n294 + n111*n133*(pow(alpha, NP0*n0 - n15*n187)*n166*n72/n177 + n161)*(pow(alpha, NP0*n0 - n15*n187)*n15*n166*n48/n177 + n15*n48*n64)/n297 + n111*n134*(pow(alpha, NP0*n0 - n187*n7)*n166*n79/n177 + n153)*(pow(alpha, NP0*n0 - n187*n7)*n166*n48*n7/n177 + n143*n48)/n289 + n111*n140*(pow(alpha, NP0*n0 - n11*n187)*n1*n11*n166/n177 + n157)*(pow(alpha, NP0*n0 - n11*n187)*n11*n166*n48/n177 + n141*n48)/n293 + n111*n147*(pow(alpha, NP0*n0 - n0*n187)*n0*n1*n166/n177 + n149)*(pow(alpha, NP0*n0 - n0*n187)*n1*n166*n21*n22/n177 + n1*n21*n22*n50)/n285 + n111*n311*n94*(pow(alpha, NP0*n0 - n13*n187)*n114*n13*n166/n177 + pow(alpha, n0*n25 - n13*n187)*n114*n13*n85/(n179*n84) - pow(alpha, n0*n25 - n13*n187)*n30*n40*n85/(n179*n84) + n176) + n111*n312*n82*(pow(alpha, NP0*n0 - n187*n4)*n114*n166*n4/n177 + pow(alpha, n0*n25 - n187*n4)*n114*n4*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n4)*n30*n31*n85/(n179*n84) + n174) + n111*n321*xF[11]*(pow(alpha, NP0*n0 - n187*n5)*n166*n73/n177 + n151)*(pow(alpha, NP0*n0 - n187*n5)*n166*n48*n5/n177 + n48*n5*n54) + n111*n322*xF[11]*(pow(alpha, NP0*n0 - n187*n5)*n114*n166*n5/n177 + pow(alpha, n0*n25 - n187*n5)*n114*n5*n85/(n179*n84) - pow(alpha, n0*n25 - n187*n5)*n30*n32*n85/(n179*n84) + n171) + n111*n323*xF[4]*(pow(alpha, NP0*n0 - n14*n187)*n166*n75/n177 + n160)*(pow(alpha, NP0*n0 - n14*n187)*n14*n166*n48/n177 + n126*n48) + n111*n325*(pow(alpha, NP0*n0 - n15*n187)*n114*n15*n166/n177 + pow(alpha, n0*n25 - n15*n187)*n114*n15*n85/(n179*n84) - pow(alpha, n0*n25 - n15*n187)*n125*n85/(n179*n84) + n125*n64) + n111*n326*(pow(alpha, NP0*n0 - n17*n187)*n166*n80/n177 + n163)*(pow(alpha, NP0*n0 - n17*n187)*n166*n17*n48/n177 + n17*n48*n66) + n111*n327*(pow(alpha, NP0*n0 - n11*n187)*n11*n114*n166/n177 + pow(alpha, n0*n25 - n11*n187)*n11*n114*n85/(n179*n84) - pow(alpha, n0*n25 - n11*n187)*n139*n85/(n179*n84) + n139*n60) + n111*n329*(pow(alpha, NP0*n0 - n17*n187)*n114*n166*n17/n177 + pow(alpha, n0*n25 - n17*n187)*n114*n17*n85/(n179*n84) - pow(alpha, n0*n25 - n17*n187)*n30*n44*n85/(n179*n84) + n30*n44*n66) + n111*n330*(pow(alpha, NP0*n0 - n18*n187)*n114*n166*n18/n177 + pow(alpha, n0*n25 - n18*n187)*n114*n18*n85/(n179*n84) - pow(alpha, n0*n25 - n18*n187)*n30*n45*n85/(n179*n84) + n172) + n111*n99*xF[8]*(pow(alpha, NP0*n0 - n18*n187)*n1*n166*n18/n177 + n164)*(pow(alpha, NP0*n0 - n18*n187)*n166*n18*n48/n177 + n146*n48)/n300 + n111*n94*xF[3]*(pow(alpha, NP0*n0 - n13*n187)*n1*n13*n166/n177 + n159)*(pow(alpha, NP0*n0 - n13*n187)*n13*n166*n48/n177 + n121*n48)/n295 + n111*n82*xF[10]*(pow(alpha, NP0*n0 - n187*n4)*n1*n166*n4/n177 + n150)*(pow(alpha, NP0*n0 - n187*n4)*n166*n4*n48/n177 + n129*n48)/n286 + n120*n70*(pow(alpha, NP0*n0 - n10*n187)*n10*n166*n22*n30/n177 + pow(alpha, n0*n25 - n10*n187)*n10*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n10*n187)*n30*n37*n85/(n179*n84) + n106*n30*n37)/n275 + n130*n70*(pow(alpha, NP0*n0 - n16*n187)*n16*n166*n22*n30/n177 + pow(alpha, n0*n25 - n16*n187)*n16*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n16*n187)*n30*n43*n85/(n179*n84) + n110*n30*n43)/n281 + n131*n70*(pow(alpha, NP0*n0 - n187*n8)*n166*n22*n30*n8/n177 + pow(alpha, n0*n25 - n187*n8)*n145*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n8)*n22*n30*n8*n85/(n179*n84) + n105*n145)/n273 + n132*n70*(pow(alpha, NP0*n0 - n12*n187)*n12*n166*n22*n30/n177 + pow(alpha, n0*n25 - n12*n187)*n12*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n12*n187)*n137*n85/(n179*n84) + n107*n137)/n277 + n134*n70*(pow(alpha, NP0*n0 - n187*n7)*n166*n22*n30*n7/n177 + pow(alpha, n0*n25 - n187*n7)*n22*n30*n7*n85/(n179*n84) + pow(alpha, n0*n25 - n187*n7)*n30*n34*n85/(n179*n84) + n104*n30*n34)/n272 + n147*n70*(pow(alpha, NP0*n0 - n0*n187)*n144*(-n23 + xPj*xTj)/(n177*n51) + n102*n144)/n268 + n328*n70*(pow(alpha, NP0*n0 - n14*n187)*n14*n166*n22*n30/n177 + pow(alpha, n0*n25 - n14*n187)*n14*n22*n30*n85/(n179*n84) + pow(alpha, n0*n25 - n14*n187)*n30*n41*n85/(n179*n84) + n108*n30*n41) + n335 + n336 + n337 + n338 + n339 + n340 + n341 + n342 + n343 + n344 + n345 + n346 + n347 + n348 + n349 + n350 + n351 + n422 + n423 + n424 + n425 + n426 + n427 + n428 + n429 + n430 + n431 + n432 + n433 + n434 + n435 + n436 + n437 + n438)) - n334 - xTj*(n111*n120*n405 + n111*n122*n404 + n111*n123*n399 + n111*n127*n401 + n111*n130*n367/n281 + n111*n131*n403 + n111*n132*n400 + n111*n134*n402 + n111*n147*n354/n268 + n111*n311*n397 + n111*n312*n398 + n111*n322*n390 + n111*n325*n366 + n111*n327*n362 + n111*n328*n365 + n111*n329*n368 + n111*n330*n369 + n112*n70*n71/n237 + n113*n70*n80/n248 + n115*n70*n74/n250 + n126*n49*n70/n245 + n149*n304*n70 + n150*n305*n70 + n151*n303*n70 + n154*n70*xF[14]/n239 + n156*n308*n70 + n159*n310*n70 + n161*n70*xF[5]/n246 + n162*n309*n70 + n164*n307*n70 + n167*n70/n242 + n168*n70/n238 + n317*n70*n76 + n318*n70*n78), -n21);
23104  NP_sqrt_base = fabs(NP_sqrt_base);
23105  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
23106  NT1 = n116*(n180 - log(-pow(alpha, NP1*n0)*n166 + 1));
23107  g0 = MW[1] - Mstar;
23108  g1 = MW[0] - Mstar;
23109  g2 = NT1 + 1;
23110  g3 = xPj - xTj;
23111  g4 = MW[10] - Mstar;
23112  g5 = MW[11] - Mstar;
23113  g6 = MW[12] - Mstar;
23114  g7 = MW[13] - Mstar;
23115  g8 = MW[14] - Mstar;
23116  g9 = MW[15] - Mstar;
23117  g10 = MW[16] - Mstar;
23118  g11 = MW[2] - Mstar;
23119  g12 = MW[3] - Mstar;
23120  g13 = MW[4] - Mstar;
23121  g14 = MW[5] - Mstar;
23122  g15 = MW[6] - Mstar;
23123  g16 = MW[7] - Mstar;
23124  g17 = MW[8] - Mstar;
23125  g18 = MW[9] - Mstar;
23126  g19 = xF[0] - xTj;
23127  g20 = xF[0] - xPj;
23128  g21 = -xTj;
23129  g22 = xPj/xF[1];
23130  g23 = pow(alpha, -g1);
23131  g24 = pow(alpha, -g4);
23132  g25 = pow(alpha, -g5);
23133  g26 = pow(alpha, -g6);
23134  g27 = pow(alpha, -g7);
23135  g28 = pow(alpha, -g8);
23136  g29 = pow(alpha, -g9);
23137  g30 = pow(alpha, -g10);
23138  g31 = pow(alpha, -g0);
23139  g32 = pow(alpha, -g11);
23140  g33 = pow(alpha, -g12);
23141  g34 = pow(alpha, -g13);
23142  g35 = pow(alpha, -g14);
23143  g36 = pow(alpha, -g15);
23144  g37 = pow(alpha, -g16);
23145  g38 = pow(alpha, -g17);
23146  g39 = pow(alpha, -g18);
23147  g40 = log(xF[0]/xF[1]);
23148  g41 = -g2;
23149  g42 = pow(alpha, NP1*g0);
23150  g43 = pow(alpha, NP1*g1);
23151  g44 = pow(alpha, NP1*g4);
23152  g45 = log(g23);
23153  g46 = pow(alpha, NP1*g5);
23154  g47 = pow(alpha, NP1*g6);
23155  g48 = pow(alpha, NP1*g7);
23156  g49 = pow(alpha, NP1*g8);
23157  g50 = pow(alpha, NP1*g9);
23158  g51 = pow(alpha, NP1*g10);
23159  g52 = pow(alpha, NP1*g11);
23160  g53 = pow(alpha, NP1*g12);
23161  g54 = pow(alpha, NP1*g13);
23162  g55 = pow(alpha, NP1*g14);
23163  g56 = pow(alpha, NP1*g15);
23164  g57 = pow(alpha, NP1*g16);
23165  g58 = pow(alpha, NP1*g17);
23166  g59 = pow(alpha, NP1*g18);
23167  g60 = -g40;
23168  g61 = g19/g3;
23169  g62 = g3/g19;
23170  g63 = -g42 + 1;
23171  g64 = -g42 + 1;
23172  g65 = -g43 + 1;
23173  g66 = -g52 + 1;
23174  g67 = -g53 + 1;
23175  g68 = -g54 + 1;
23176  g69 = -g55 + 1;
23177  g70 = -g56 + 1;
23178  g71 = -g57 + 1;
23179  g72 = -g58 + 1;
23180  g73 = -g59 + 1;
23181  g74 = -g44 + 1;
23182  g75 = -g46 + 1;
23183  g76 = -g47 + 1;
23184  g77 = -g48 + 1;
23185  g78 = -g49 + 1;
23186  g79 = -g50 + 1;
23187  g80 = -g51 + 1;
23188  g81 = -g43;
23189  g82 = -g44;
23190  g83 = -g46;
23191  g84 = -g47;
23192  g85 = -g48;
23193  g86 = -g49;
23194  g87 = -g50;
23195  g88 = -g51;
23196  g89 = -g52;
23197  g90 = -g53;
23198  g91 = -g54;
23199  g92 = -g55;
23200  g93 = -g56;
23201  g94 = -g57;
23202  g95 = -g58;
23203  g96 = -g59;
23204  g97 = -1.0*g40;
23205  g98 = -g3/g20;
23206  g99 = g20/(g3*xF[1]);
23207  g100 = pow(alpha, g0*g41) - 1;
23208  g101 = pow(alpha, g0*g41) - 1;
23209  g102 = pow(alpha, g1*g41) - 1;
23210  g103 = pow(alpha, g11*g41) - 1;
23211  g104 = pow(alpha, g12*g41) - 1;
23212  g105 = pow(alpha, g13*g41) - 1;
23213  g106 = pow(alpha, g14*g41) - 1;
23214  g107 = pow(alpha, g15*g41) - 1;
23215  g108 = pow(alpha, g16*g41) - 1;
23216  g109 = pow(alpha, g17*g41) - 1;
23217  g110 = pow(alpha, g18*g41) - 1;
23218  g111 = pow(alpha, g4*g41) - 1;
23219  g112 = pow(alpha, g41*g5) - 1;
23220  g113 = pow(alpha, g41*g6) - 1;
23221  g114 = pow(alpha, g41*g7) - 1;
23222  g115 = pow(alpha, g41*g8) - 1;
23223  g116 = pow(alpha, g41*g9) - 1;
23224  g117 = pow(alpha, g10*g41) - 1;
23225  g118 = -pow(alpha, g1*g41);
23226  g119 = -pow(alpha, g4*g41);
23227  g120 = -pow(alpha, g41*g5);
23228  g121 = -pow(alpha, g41*g6);
23229  g122 = -pow(alpha, g41*g7);
23230  g123 = -pow(alpha, g41*g8);
23231  g124 = -pow(alpha, g41*g9);
23232  g125 = -pow(alpha, g10*g41);
23233  g126 = -pow(alpha, g11*g41);
23234  g127 = -pow(alpha, g12*g41);
23235  g128 = -pow(alpha, g13*g41);
23236  g129 = -pow(alpha, g14*g41);
23237  g130 = -pow(alpha, g15*g41);
23238  g131 = -pow(alpha, g16*g41);
23239  g132 = -pow(alpha, g17*g41);
23240  g133 = -pow(alpha, g18*g41);
23241  g134 = g101 + g64;
23242  g135 = -g118 - g43;
23243  g136 = -g119 - g44;
23244  g137 = -g120 - g46;
23245  g138 = -g121 - g47;
23246  g139 = -g122 - g48;
23247  g140 = -g123 - g49;
23248  g141 = -g124 - g50;
23249  g142 = -g125 - g51;
23250  g143 = -g126 - g52;
23251  g144 = -g127 - g53;
23252  g145 = -g128 - g54;
23253  g146 = -g129 - g55;
23254  g147 = -g130 - g56;
23255  g148 = -g131 - g57;
23256  g149 = -g132 - g58;
23257  g150 = -g133 - g59;
23258  g151 = pow(alpha, g1*g41) + g81;
23259  g152 = g101 + g64;
23260  g153 = pow(alpha, g4*g41) + g82;
23261  g154 = pow(alpha, g41*g5) + g83;
23262  g155 = pow(alpha, g41*g6) + g84;
23263  g156 = pow(alpha, g41*g7) + g85;
23264  g157 = pow(alpha, g41*g8) + g86;
23265  g158 = pow(alpha, g41*g9) + g87;
23266  g159 = pow(alpha, g10*g41) + g88;
23267  g160 = pow(alpha, g11*g41) + g89;
23268  g161 = pow(alpha, g12*g41) + g90;
23269  g162 = pow(alpha, g13*g41) + g91;
23270  g163 = pow(alpha, g14*g41) + g92;
23271  g164 = pow(alpha, g15*g41) + g93;
23272  g165 = pow(alpha, g16*g41) + g94;
23273  g166 = pow(alpha, g17*g41) + g95;
23274  g167 = pow(alpha, g18*g41) + g96;
23275  g168 = xF[9]/g167;
23276  g169 = xF[8]/g166;
23277  g170 = xF[1]/g152;
23278  g171 = xF[10]/g153;
23279  g172 = xF[15]/g158;
23280  g173 = xF[3]/g161;
23281  g174 = xF[16]/g159;
23282  g175 = xF[7]/g165;
23283  g176 = xF[4]/g162;
23284  g177 = xF[12]/g155;
23285  g178 = xF[13]/g156;
23286  g179 = xF[11]/g154;
23287  g180 = xF[6]/g164;
23288  g181 = xF[14]/g157;
23289  g182 = xF[5]/g163;
23290  g183 = xF[2]/g160;
23291  g184 = xF[0]/g151;
23292  g185 = xF[0]/g135;
23293  g186 = xF[15]/g141;
23294  g187 = xF[4]/g145;
23295  g188 = xF[7]/g148;
23296  g189 = xF[2]/g143;
23297  g190 = xF[11]/g137;
23298  g191 = xF[1]/g134;
23299  g192 = xF[13]/g139;
23300  g193 = xF[16]/g142;
23301  g194 = xF[3]/g144;
23302  g195 = xF[6]/g147;
23303  g196 = xF[14]/g140;
23304  g197 = xF[8]/g149;
23305  g198 = xF[12]/g138;
23306  g199 = xF[10]/g136;
23307  g200 = xF[9]/g150;
23308  g201 = xF[5]/g146;
23309  g202 = g76/g138;
23310  g203 = g73/g150;
23311  g204 = g79/g141;
23312  g205 = g68/g145;
23313  g206 = g71/g148;
23314  g207 = g66/g143;
23315  g208 = g65/g135;
23316  g209 = g69/g146;
23317  g210 = g70/g147;
23318  g211 = g77/g139;
23319  g212 = g67/g144;
23320  g213 = g80/g142;
23321  g214 = g75/g137;
23322  g215 = g78/g140;
23323  g216 = g74/g136;
23324  g217 = g72/g149;
23325  g218 = g63/g134;
23326  g219 = g102/g135;
23327  g220 = g116/g141;
23328  g221 = g112/g137;
23329  g222 = g103/g143;
23330  g223 = g104/g144;
23331  g224 = g105/g145;
23332  g225 = g100/g134;
23333  g226 = g109/g149;
23334  g227 = g110/g150;
23335  g228 = g117/g142;
23336  g229 = g107/g147;
23337  g230 = g115/g140;
23338  g231 = g113/g138;
23339  g232 = g114/g139;
23340  g233 = g108/g148;
23341  g234 = g111/g136;
23342  g235 = g106/g146;
23343  g236 = log(g152*g21*g99/g64);
23344  g237 = log(g134*g21*g99/g63);
23345  g238 = log(g152*g22*g61/g101);
23346  g239 = 1.0*g236;
23347  g240 = log(g134*g22*g61/g100);
23348  g241 = 1.0*g238;
23349  g242 = -g101*g170*g241 - g168*g239*(g96 + 1) - g168*g241*(pow(alpha, g18*g41) - 1) - g169*g239*(g95 + 1) - g169*g241*(pow(alpha, g17*g41) - 1) - g170*g239*g64 - g171*g239*(g82 + 1) - g171*g241*(pow(alpha, g4*g41) - 1) - g172*g239*(g87 + 1) - g172*g241*(pow(alpha, g41*g9) - 1) - g173*g239*(g90 + 1) - g173*g241*(pow(alpha, g12*g41) - 1) - g174*g239*(g88 + 1) - g174*g241*(pow(alpha, g10*g41) - 1) - g175*g239*(g94 + 1) - g175*g241*(pow(alpha, g16*g41) - 1) - g176*g239*(g91 + 1) - g176*g241*(pow(alpha, g13*g41) - 1) - g177*g239*(g84 + 1) - g177*g241*(pow(alpha, g41*g6) - 1) - g178*g239*(g85 + 1) - g178*g241*(pow(alpha, g41*g7) - 1) - g179*g239*(g83 + 1) - g179*g241*(pow(alpha, g41*g5) - 1) - g180*g239*(g93 + 1) - g180*g241*(pow(alpha, g15*g41) - 1) - g181*g239*(g86 + 1) - g181*g241*(pow(alpha, g41*g8) - 1) - g182*g239*(g92 + 1) - g182*g241*(pow(alpha, g14*g41) - 1) - g183*g239*(g89 + 1) - g183*g241*(pow(alpha, g11*g41) - 1) - g184*g239*(g81 + 1) - g184*g241*(pow(alpha, g1*g41) - 1) - g97*xF[0] - g97*xF[10] - g97*xF[11] - g97*xF[12] - g97*xF[13] - g97*xF[14] - g97*xF[15] - g97*xF[16] - g97*xF[1] - g97*xF[2] - g97*xF[3] - g97*xF[4] - g97*xF[5] - g97*xF[6] - g97*xF[7] - g97*xF[8] - g97*xF[9];
23350  LpF = xF[0]*(g23 + 1.0)*(g208*g237 + g219*g240 + g60)/(g45*(g23 - 1.0)) + xF[10]*(g24 + 1.0)*(g216*g237 + g234*g240 + g60)/(g45*(g24 - 1.0)) + xF[11]*(g25 + 1.0)*(g214*g237 + g221*g240 + g60)/(g45*(g25 - 1.0)) + xF[12]*(g26 + 1.0)*(g202*g237 + g231*g240 + g60)/(g45*(g26 - 1.0)) + xF[13]*(g27 + 1.0)*(g211*g237 + g232*g240 + g60)/(g45*(g27 - 1.0)) + xF[14]*(g28 + 1.0)*(g215*g237 + g230*g240 + g60)/(g45*(g28 - 1.0)) + xF[15]*(g29 + 1.0)*(g204*g237 + g220*g240 + g60)/(g45*(g29 - 1.0)) + xF[16]*(g30 + 1.0)*(g213*g237 + g228*g240 + g60)/(g45*(g30 - 1.0)) + xF[1]*(g31 + 1.0)*(g218*g237 + g225*g240 + g60)/(g45*(g31 - 1.0)) + xF[2]*(g32 + 1.0)*(g207*g237 + g222*g240 + g60)/(g45*(g32 - 1.0)) + xF[3]*(g33 + 1.0)*(g212*g237 + g223*g240 + g60)/(g45*(g33 - 1.0)) + xF[4]*(g34 + 1.0)*(g205*g237 + g224*g240 + g60)/(g45*(g34 - 1.0)) + xF[5]*(g35 + 1.0)*(g209*g237 + g235*g240 + g60)/(g45*(g35 - 1.0)) + xF[6]*(g36 + 1.0)*(g210*g237 + g229*g240 + g60)/(g45*(g36 - 1.0)) + xF[7]*(g37 + 1.0)*(g206*g237 + g233*g240 + g60)/(g45*(g37 - 1.0)) + xF[8]*(g38 + 1.0)*(g217*g237 + g226*g240 + g60)/(g45*(g38 - 1.0)) + xF[9]*(g39 + 1.0)*(g203*g237 + g227*g240 + g60)/(g45*(g39 - 1.0));
23351  PpF = g61;
23352  TpF = -g20/g3;
23353  SWUpF = g242;
23354  SWUpP = g242*g62;
23355  xP[0] = g102*g185*g62;
23356  xP[1] = g100*g191*g62;
23357  xP[2] = g103*g189*g62;
23358  xP[3] = g104*g194*g62;
23359  xP[4] = g105*g187*g62;
23360  xP[5] = g106*g201*g62;
23361  xP[6] = g107*g195*g62;
23362  xP[7] = g108*g188*g62;
23363  xP[8] = g109*g197*g62;
23364  xP[9] = g110*g200*g62;
23365  xP[10] = g111*g199*g62;
23366  xP[11] = g112*g190*g62;
23367  xP[12] = g113*g198*g62;
23368  xP[13] = g114*g192*g62;
23369  xP[14] = g115*g196*g62;
23370  xP[15] = g116*g186*g62;
23371  xP[16] = g117*g193*g62;
23372  xT[0] = g185*g65*g98;
23373  xT[1] = g191*g63*g98;
23374  xT[2] = g189*g66*g98;
23375  xT[3] = g194*g67*g98;
23376  xT[4] = g187*g68*g98;
23377  xT[5] = g201*g69*g98;
23378  xT[6] = g195*g70*g98;
23379  xT[7] = g188*g71*g98;
23380  xT[8] = g197*g72*g98;
23381  xT[9] = g200*g73*g98;
23382  xT[10] = g199*g74*g98;
23383  xT[11] = g190*g75*g98;
23384  xT[12] = g198*g76*g98;
23385  xT[13] = g192*g77*g98;
23386  xT[14] = g196*g78*g98;
23387  xT[15] = g186*g79*g98;
23388  xT[16] = g193*g80*g98;
23389  break;
23390  case 18:
23391  n0 = -2.00000000000000;
23392  n1 = MW[0] - Mstar;
23393  n2 = log(alpha);
23394  n3 = xPj - xTj;
23395  n4 = xF[0] - xPj;
23396  n5 = MW[10] - Mstar;
23397  n6 = MW[11] - Mstar;
23398  n7 = MW[12] - Mstar;
23399  n8 = MW[13] - Mstar;
23400  n9 = MW[14] - Mstar;
23401  n10 = MW[15] - Mstar;
23402  n11 = MW[16] - Mstar;
23403  n12 = MW[17] - Mstar;
23404  n13 = MW[1] - Mstar;
23405  n14 = MW[2] - Mstar;
23406  n15 = MW[3] - Mstar;
23407  n16 = MW[4] - Mstar;
23408  n17 = MW[5] - Mstar;
23409  n18 = MW[6] - Mstar;
23410  n19 = MW[7] - Mstar;
23411  n20 = MW[8] - Mstar;
23412  n21 = MW[9] - Mstar;
23413  n22 = log(xTj);
23414  n23 = -n1;
23415  n24 = -2;
23416  n25 = xF[0]*xPj;
23417  n26 = -Mstar;
23418  n27 = -xTj;
23419  n28 = -xPj;
23420  n29 = -NP0*n0;
23421  n30 = pow(n1, -n0);
23422  n31 = pow(n2, -n0);
23423  n32 = pow(n5, -n0);
23424  n33 = pow(n6, -n0);
23425  n34 = pow(n7, -n0);
23426  n35 = pow(n8, -n0);
23427  n36 = pow(n9, -n0);
23428  n37 = pow(n10, -n0);
23429  n38 = pow(n11, -n0);
23430  n39 = pow(n12, -n0);
23431  n40 = pow(n13, -n0);
23432  n41 = pow(n14, -n0);
23433  n42 = pow(n15, -n0);
23434  n43 = pow(n16, -n0);
23435  n44 = pow(n17, -n0);
23436  n45 = pow(n18, -n0);
23437  n46 = pow(n19, -n0);
23438  n47 = pow(n20, -n0);
23439  n48 = pow(n21, -n0);
23440  n49 = Mstar*n2;
23441  n50 = -n0*n2;
23442  n51 = NP0*n1;
23443  n52 = -n2;
23444  n53 = pow(alpha, n51);
23445  n54 = n25 + n27*xF[0];
23446  n55 = n25 + n27*xPj;
23447  n56 = pow(alpha, NP0*n5);
23448  n57 = pow(alpha, NP0*n6);
23449  n58 = pow(alpha, NP0*n7);
23450  n59 = pow(alpha, NP0*n8);
23451  n60 = pow(alpha, NP0*n9);
23452  n61 = pow(alpha, NP0*n10);
23453  n62 = pow(alpha, NP0*n11);
23454  n63 = pow(alpha, NP0*n12);
23455  n64 = pow(alpha, NP0*n13);
23456  n65 = pow(alpha, NP0*n14);
23457  n66 = pow(alpha, NP0*n15);
23458  n67 = pow(alpha, NP0*n16);
23459  n68 = pow(alpha, NP0*n17);
23460  n69 = pow(alpha, NP0*n18);
23461  n70 = pow(alpha, NP0*n19);
23462  n71 = pow(alpha, NP0*n20);
23463  n72 = pow(alpha, NP0*n21);
23464  n73 = MW[0]*n52;
23465  n74 = n3/n4;
23466  n75 = n17*n2;
23467  n76 = n2*n7;
23468  n77 = n13*n2;
23469  n78 = n2*n21;
23470  n79 = n2*n8;
23471  n80 = n14*n2;
23472  n81 = n10*n2;
23473  n82 = n19*n2;
23474  n83 = -n53 + 1;
23475  n84 = -n56 + 1;
23476  n85 = pow(alpha, NP0*n0*n23);
23477  n86 = pow(n55, -n0);
23478  n87 = -n57 + 1;
23479  n88 = -n58 + 1;
23480  n89 = -n59 + 1;
23481  n90 = -n60 + 1;
23482  n91 = -n61 + 1;
23483  n92 = -n62 + 1;
23484  n93 = -n63 + 1;
23485  n94 = -n64 + 1;
23486  n95 = -n65 + 1;
23487  n96 = -n66 + 1;
23488  n97 = -n67 + 1;
23489  n98 = -n68 + 1;
23490  n99 = -n69 + 1;
23491  n100 = -n70 + 1;
23492  n101 = -n71 + 1;
23493  n102 = -n72 + 1;
23494  n103 = -n96;
23495  n104 = -n88;
23496  n105 = -n99;
23497  n106 = -n93;
23498  n107 = -n84;
23499  n108 = -n83;
23500  n109 = -n87;
23501  n110 = -n53;
23502  n111 = -n58;
23503  n112 = -n59;
23504  n113 = -n60;
23505  n114 = -n62;
23506  n115 = -n65;
23507  n116 = -n67;
23508  n117 = -n68;
23509  n118 = -n69;
23510  n119 = n1*n31;
23511  n120 = 1/(n1*n2);
23512  n121 = n92*xF[16];
23513  n122 = n31*n40;
23514  n123 = n18*n69;
23515  n124 = n15*n66;
23516  n125 = n1*n53;
23517  n126 = n31*n44;
23518  n127 = n16*n67;
23519  n128 = n12*n63;
23520  n129 = n60*n9;
23521  n130 = n5*n56;
23522  n131 = n31*n46;
23523  n132 = n90*xF[14];
23524  n133 = n95*xF[2];
23525  n134 = n31*n35;
23526  n135 = n31*n37;
23527  n136 = n31*n41;
23528  n137 = n11*n62;
23529  n138 = n98*xF[5];
23530  n139 = n13*n64;
23531  n140 = n59*n8;
23532  n141 = n19*n70;
23533  n142 = n30*n31;
23534  n143 = n31*n36;
23535  n144 = n10*n61;
23536  n145 = n20*n71;
23537  n146 = n83*xF[0];
23538  n147 = log((-1.0 + xPj/xF[0])/n3);
23539  n148 = -n91*xF[15];
23540  n149 = -n102*xF[9];
23541  n150 = n21*n72*xF[9];
23542  n151 = -n89*xF[13];
23543  n152 = n2*n57*n6;
23544  n153 = n145*n2;
23545  n154 = n55/n54;
23546  n155 = n31*n39*n63;
23547  n156 = n142*n53;
23548  n157 = n31*n33*n57;
23549  n158 = n31*n47*n71;
23550  n159 = n31*n38*n62;
23551  n160 = n31*n34*n58;
23552  n161 = n31*n32*n56;
23553  n162 = n31*n42*n66;
23554  n163 = n110*n154 + 1;
23555  n164 = n147 + n22 + n49 + n73;
23556  n165 = n154*n53/n163;
23557  n166 = n120*(n164 - log(n163)) + 1;
23558  n167 = pow(alpha, n1*n166);
23559  n168 = pow(alpha, n166*n5);
23560  n169 = pow(alpha, n166*n6);
23561  n170 = pow(alpha, n166*n7);
23562  n171 = pow(alpha, n166*n8);
23563  n172 = pow(alpha, n166*n9);
23564  n173 = pow(alpha, n10*n166);
23565  n174 = pow(alpha, n11*n166);
23566  n175 = pow(alpha, n12*n166);
23567  n176 = pow(alpha, n13*n166);
23568  n177 = pow(alpha, n14*n166);
23569  n178 = pow(alpha, n15*n166);
23570  n179 = pow(alpha, n16*n166);
23571  n180 = pow(alpha, n166*n17);
23572  n181 = pow(alpha, n166*n18);
23573  n182 = pow(alpha, n166*n19);
23574  n183 = pow(alpha, n166*n20);
23575  n184 = pow(alpha, n166*n21);
23576  n185 = n16/n179;
23577  n186 = n19/n182;
23578  n187 = n8/n171;
23579  n188 = n12/n175;
23580  n189 = n15/n178;
23581  n190 = n18/n181;
23582  n191 = n9/n172;
23583  n192 = n20/n183;
23584  n193 = n6/n169;
23585  n194 = n13/n176;
23586  n195 = n14/n177;
23587  n196 = -1/n167;
23588  n197 = n10/n173;
23589  n198 = n7/n170;
23590  n199 = n21/n184;
23591  n200 = n5/n168;
23592  n201 = n11/n174;
23593  n202 = n17/n180;
23594  n203 = pow(alpha, n166*n23) + n83 - 1;
23595  n204 = n84 - 1 + 1.0/n168;
23596  n205 = n87 - 1 + 1.0/n169;
23597  n206 = n88 - 1 + 1.0/n170;
23598  n207 = n89 - 1 + 1.0/n171;
23599  n208 = n90 - 1 + 1.0/n172;
23600  n209 = n91 - 1 + 1.0/n173;
23601  n210 = n92 - 1 + 1.0/n174;
23602  n211 = n93 - 1 + 1.0/n175;
23603  n212 = n94 - 1 + 1.0/n176;
23604  n213 = n95 - 1 + 1.0/n177;
23605  n214 = n96 - 1 + 1.0/n178;
23606  n215 = n97 - 1 + 1.0/n179;
23607  n216 = n98 - 1 + 1.0/n180;
23608  n217 = n99 - 1 + 1.0/n181;
23609  n218 = n100 - 1 + 1.0/n182;
23610  n219 = n101 - 1 + 1.0/n183;
23611  n220 = n102 - 1 + 1.0/n184;
23612  n221 = pow(n203, 3);
23613  n222 = pow(n204, 3);
23614  n223 = pow(n205, 3);
23615  n224 = pow(n206, 3);
23616  n225 = pow(n207, 3);
23617  n226 = pow(n208, 3);
23618  n227 = pow(n209, 3);
23619  n228 = pow(n210, 3);
23620  n229 = pow(n211, 3);
23621  n230 = pow(n212, 3);
23622  n231 = pow(n213, 3);
23623  n232 = pow(n214, 3);
23624  n233 = pow(n215, 3);
23625  n234 = pow(n216, 3);
23626  n235 = pow(n217, 3);
23627  n236 = pow(n218, 3);
23628  n237 = pow(n219, 3);
23629  n238 = pow(n220, 3);
23630  n239 = xF[11]/n205;
23631  n240 = xF[12]/n206;
23632  n241 = xF[17]/n211;
23633  n242 = xF[0]/n203;
23634  n243 = xF[10]/n204;
23635  n244 = xF[9]/n220;
23636  n245 = xF[8]/n219;
23637  n246 = xF[16]/n210;
23638  n247 = xF[3]/n214;
23639  n248 = pow(n214, n24)*xF[3];
23640  n249 = xF[6]/n235;
23641  n250 = pow(n211, n24)*xF[17];
23642  n251 = pow(n204, n24)*xF[10];
23643  n252 = xF[17]/n229;
23644  n253 = pow(n203, n24)*xF[0];
23645  n254 = xF[12]/n224;
23646  n255 = xF[10]/n222;
23647  n256 = n2*xF[14]/n208;
23648  n257 = n2*xF[4]/n215;
23649  n258 = n2*n247;
23650  n259 = n2*pow(n203, n24);
23651  n260 = n2*xF[6]/n217;
23652  n261 = n64*xF[1]/n212;
23653  n262 = n68*xF[5]/n216;
23654  n263 = n70*xF[7]/n218;
23655  n264 = n59*xF[13]/n207;
23656  n265 = n65*xF[2]/n213;
23657  n266 = n61*xF[15]/n209;
23658  n267 = n60*xF[14]/n208;
23659  n268 = n94/n230;
23660  n269 = pow(n215, n24)*n97*xF[4];
23661  n270 = n97*xF[4]/n233;
23662  n271 = -n138*pow(n216, n24);
23663  n272 = -n100*xF[7]/n236;
23664  n273 = -pow(n212, n24)*n94*xF[1];
23665  n274 = -n100*pow(n218, n24)*xF[7];
23666  n275 = -n101*pow(n219, n24)*xF[8];
23667  n276 = n244*n31*n48*n72;
23668  n277 = n31*n43*n67*xF[4]/n215;
23669  n278 = n31*n45*n69*xF[6]/n217;
23670  n279 = n2*n23*n242*n53*n74;
23671  n280 = n156*n242*n74;
23672  n281 = n161*n243*n74;
23673  n282 = n157*n239*n74;
23674  n283 = n160*n240*n74;
23675  n284 = n134*n264*n74;
23676  n285 = n143*n267*n74;
23677  n286 = n135*n266*n74;
23678  n287 = n159*n246*n74;
23679  n288 = n155*n241*n74;
23680  n289 = n122*n261*n74;
23681  n290 = n136*n265*n74;
23682  n291 = n162*n247*n74;
23683  n292 = n277*n74;
23684  n293 = n126*n262*n74;
23685  n294 = n278*n74;
23686  n295 = n131*n263*n74;
23687  n296 = n158*n245*n74;
23688  n297 = n276*n74;
23689  n298 = 0.5*n280;
23690  n299 = n154/(n163*n167);
23691  n300 = n299 + 1;
23692  n301 = n125*n2*n299 + n125*n2;
23693  n302 = n130*n2 + n165*n2*n200;
23694  n303 = n152 + n165*n193*n2;
23695  n304 = n165*n76/n170 + n58*n76;
23696  n305 = n165*n79/n171 + n59*n79;
23697  n306 = n129*n2 + n165*n191*n2;
23698  n307 = n165*n81/n173 + n61*n81;
23699  n308 = n137*n2 + n165*n2*n201;
23700  n309 = n128*n2 + n165*n188*n2;
23701  n310 = n165*n77/n176 + n64*n77;
23702  n311 = n165*n80/n177 + n65*n80;
23703  n312 = n124*n2 + n165*n189*n2;
23704  n313 = n127*n2 + n165*n185*n2;
23705  n314 = n165*n75/n180 + n68*n75;
23706  n315 = n123*n2 + n165*n190*n2;
23707  n316 = n165*n82/n182 + n70*n82;
23708  n317 = n153 + n165*n192*n2;
23709  n318 = n165*n78/n184 + n72*n78;
23710  n319 = pow(n301, -n0);
23711  n320 = pow(n302, -n0);
23712  n321 = pow(n303, -n0);
23713  n322 = pow(n304, -n0);
23714  n323 = pow(n305, -n0);
23715  n324 = pow(n306, -n0);
23716  n325 = pow(n307, -n0);
23717  n326 = pow(n308, -n0);
23718  n327 = pow(n309, -n0);
23719  n328 = pow(n310, -n0);
23720  n329 = pow(n311, -n0);
23721  n330 = pow(n312, -n0);
23722  n331 = pow(n313, -n0);
23723  n332 = pow(n314, -n0);
23724  n333 = pow(n315, -n0);
23725  n334 = pow(n316, -n0);
23726  n335 = pow(n317, -n0);
23727  n336 = pow(n318, -n0);
23728  n337 = n301*xF[0];
23729  n338 = n303*xF[11];
23730  n339 = n310*xF[1];
23731  n340 = n317*xF[8];
23732  n341 = n0*n165*n2*n23/n167 + n0*n2*n23*n53;
23733  n342 = n328*xF[1];
23734  n343 = n110*n142*n299 + n110*n142;
23735  n344 = pow(n220, n24)*n318;
23736  n345 = pow(n207, n24)*n305;
23737  n346 = pow(n208, n24)*n306;
23738  n347 = pow(n209, n24)*n307;
23739  n348 = pow(n206, n24)*n304*xF[12];
23740  n349 = pow(n217, n24)*n315*xF[6];
23741  n350 = n324/n226;
23742  n351 = n329/n231;
23743  n352 = n332/n234;
23744  n353 = n326/n228;
23745  n354 = n341/n221;
23746  n355 = n101*n335*xF[8]/n237;
23747  n356 = n321*n87*xF[11]/n223;
23748  n357 = n146*pow(n203, n24)*n301*n74;
23749  n358 = n0*n2*n23*n253*n53*n74*(pow(alpha, n166*n23 + n51)*n1*n154*n2/n163 + n125*n2);
23750  n359 = n130*n251*n50*n74*(pow(alpha, -n166*n5 + n51)*n154*n2*n5/n163 + n130*n2);
23751  n360 = pow(n205, n24)*n50*n57*n6*n74*xF[11]*(pow(alpha, -n166*n6 + n51)*n154*n2*n6/n163 + n152);
23752  n361 = pow(n206, n24)*n50*n58*n7*n74*xF[12]*(pow(alpha, -n166*n7 + n51)*n154*n76/n163 + n58*n76);
23753  n362 = n140*pow(n207, n24)*n50*n74*xF[13]*(pow(alpha, -n166*n8 + n51)*n154*n79/n163 + n59*n79);
23754  n363 = n129*pow(n208, n24)*n50*n74*xF[14]*(pow(alpha, -n166*n9 + n51)*n154*n2*n9/n163 + n129*n2);
23755  n364 = n144*pow(n209, n24)*n50*n74*xF[15]*(pow(alpha, -n10*n166 + n51)*n154*n81/n163 + n61*n81);
23756  n365 = n137*pow(n210, n24)*n50*n74*xF[16]*(pow(alpha, -n11*n166 + n51)*n11*n154*n2/n163 + n137*n2);
23757  n366 = n128*n250*n50*n74*(pow(alpha, -n12*n166 + n51)*n12*n154*n2/n163 + n128*n2);
23758  n367 = n139*pow(n212, n24)*n50*n74*xF[1]*(pow(alpha, -n13*n166 + n51)*n154*n77/n163 + n64*n77);
23759  n368 = n14*pow(n213, n24)*n50*n65*n74*xF[2]*(pow(alpha, -n14*n166 + n51)*n154*n80/n163 + n65*n80);
23760  n369 = n124*n248*n50*n74*(pow(alpha, -n15*n166 + n51)*n15*n154*n2/n163 + n124*n2);
23761  n370 = n127*pow(n215, n24)*n50*n74*xF[4]*(pow(alpha, -n16*n166 + n51)*n154*n16*n2/n163 + n127*n2);
23762  n371 = n17*pow(n216, n24)*n50*n68*n74*xF[5]*(pow(alpha, -n166*n17 + n51)*n154*n75/n163 + n68*n75);
23763  n372 = n123*pow(n217, n24)*n50*n74*xF[6]*(pow(alpha, -n166*n18 + n51)*n154*n18*n2/n163 + n123*n2);
23764  n373 = n141*pow(n218, n24)*n50*n74*xF[7]*(pow(alpha, -n166*n19 + n51)*n154*n82/n163 + n70*n82);
23765  n374 = n145*pow(n219, n24)*n50*n74*xF[8]*(pow(alpha, -n166*n20 + n51)*n154*n2*n20/n163 + n153);
23766  n375 = n150*pow(n220, n24)*n50*n74*(pow(alpha, -n166*n21 + n51)*n154*n78/n163 + n72*n78);
23767  n376 = 1.0*n125*n2*n253*n301*n74;
23768  n377 = n146*pow(n203, n24)*n343*n74;
23769  n378 = 0.5*n377;
23770  n379 = pow(alpha, n1*n29)*n119*pow(n163, n24)*n193*pow(n54, n24)*n86 - pow(alpha, n1*n29)*pow(n163, n24)*n31*n33*pow(n54, n24)*n86/n169 + n119*n165*n193 + n157;
23771  n380 = pow(alpha, n1*n29)*n119*pow(n163, n24)*n198*pow(n54, n24)*n86 - pow(alpha, n1*n29)*pow(n163, n24)*n31*n34*pow(n54, n24)*n86/n170 + n119*n165*n198 + n160;
23772  n381 = pow(alpha, n1*n29)*n134*pow(n163, n24)*pow(n54, n24)*n86/n171 + pow(alpha, n1*n29)*pow(n163, n24)*n187*n23*n31*pow(n54, n24)*n86 + n112*n134 + n165*n187*n23*n31;
23773  n382 = pow(alpha, n1*n29)*n143*pow(n163, n24)*pow(n54, n24)*n86/n172 + pow(alpha, n1*n29)*pow(n163, n24)*n191*n23*n31*pow(n54, n24)*n86 + n113*n143 + n165*n191*n23*n31;
23774  n383 = pow(alpha, n1*n29)*n119*pow(n163, n24)*n197*pow(n54, n24)*n86 - pow(alpha, n1*n29)*n135*pow(n163, n24)*pow(n54, n24)*n86/n173 + n119*n165*n197 + n135*n61;
23775  n384 = pow(alpha, n1*n29)*pow(n163, n24)*n201*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29)*pow(n163, n24)*n31*n38*pow(n54, n24)*n86/n174 + n114*n31*n38 + n165*n201*n23*n31;
23776  n385 = pow(alpha, n1*n29)*n136*pow(n163, n24)*pow(n54, n24)*n86/n177 + pow(alpha, n1*n29)*pow(n163, n24)*n195*n23*n31*pow(n54, n24)*n86 + n115*n136 + n165*n195*n23*n31;
23777  n386 = pow(alpha, n1*n29)*pow(n163, n24)*n190*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29)*pow(n163, n24)*n31*n45*pow(n54, n24)*n86/n181 + n118*n31*n45 + n165*n190*n23*n31;
23778  n387 = pow(alpha, n1*n29)*n119*pow(n163, n24)*n199*pow(n54, n24)*n86 - pow(alpha, n1*n29)*pow(n163, n24)*n31*n48*pow(n54, n24)*n86/n184 + n119*n165*n199 + n31*n48*n72;
23779  n388 = pow(n207, n24)*n74*n89*xF[13]*(pow(alpha, n1*n29 - n166*n8)*n134*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n8)*pow(n163, n24)*n23*n31*pow(n54, n24)*n8*n86 + n112*n134 + n165*n187*n23*n31);
23780  n389 = n132*pow(n208, n24)*n74*(pow(alpha, n1*n29 - n166*n9)*n143*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n9)*pow(n163, n24)*n23*n31*pow(n54, n24)*n86*n9 + n113*n143 + n165*n191*n23*n31);
23781  n390 = n121*pow(n210, n24)*n74*(pow(alpha, n1*n29 - n11*n166)*n11*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n11*n166)*pow(n163, n24)*n31*n38*pow(n54, n24)*n86 + n114*n31*n38 + n165*n201*n23*n31);
23782  n391 = n133*pow(n213, n24)*n74*(pow(alpha, n1*n29 - n14*n166)*n136*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n14*n166)*n14*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + n115*n136 + n165*n195*n23*n31);
23783  n392 = n269*n74*(pow(alpha, n1*n29 - n16*n166)*n16*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n16*n166)*pow(n163, n24)*n31*n43*pow(n54, n24)*n86 + n116*n31*n43 + n165*n185*n23*n31);
23784  n393 = pow(n217, n24)*n74*n99*xF[6]*(pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n18*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n31*n45*pow(n54, n24)*n86 + n118*n31*n45 + n165*n190*n23*n31);
23785  n394 = n107*n251*n74*(pow(alpha, n1*n29 - n166*n5)*n119*pow(n163, n24)*n5*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n5)*pow(n163, n24)*n31*n32*pow(n54, n24)*n86 + n119*n165*n200 + n161);
23786  n395 = n109*pow(n205, n24)*n74*xF[11]*(pow(alpha, n1*n29 - n166*n6)*n119*pow(n163, n24)*pow(n54, n24)*n6*n86 - pow(alpha, n1*n29 - n166*n6)*pow(n163, n24)*n31*n33*pow(n54, n24)*n86 + n119*n165*n193 + n157);
23787  n396 = n104*pow(n206, n24)*n74*xF[12]*(pow(alpha, n1*n29 - n166*n7)*n119*pow(n163, n24)*pow(n54, n24)*n7*n86 - pow(alpha, n1*n29 - n166*n7)*pow(n163, n24)*n31*n34*pow(n54, n24)*n86 + n119*n165*n198 + n160);
23788  n397 = n148*pow(n209, n24)*n74*(pow(alpha, n1*n29 - n10*n166)*n10*n119*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n10*n166)*n135*pow(n163, n24)*pow(n54, n24)*n86 + n119*n165*n197 + n135*n61);
23789  n398 = n106*n250*n74*(pow(alpha, n1*n29 - n12*n166)*n119*n12*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n12*n166)*pow(n163, n24)*n31*n39*pow(n54, n24)*n86 + n119*n165*n188 + n155);
23790  n399 = n273*n74*(pow(alpha, n1*n29 - n13*n166)*n119*n13*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n13*n166)*n122*pow(n163, n24)*pow(n54, n24)*n86 + n119*n165*n194 + n122*n64);
23791  n400 = n103*n248*n74*(pow(alpha, n1*n29 - n15*n166)*n119*n15*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n15*n166)*pow(n163, n24)*n31*n42*pow(n54, n24)*n86 + n119*n165*n189 + n162);
23792  n401 = n271*n74*(pow(alpha, n1*n29 - n166*n17)*n119*pow(n163, n24)*n17*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n17)*n126*pow(n163, n24)*pow(n54, n24)*n86 + n119*n165*n202 + n126*n68);
23793  n402 = n274*n74*(pow(alpha, n1*n29 - n166*n19)*n119*pow(n163, n24)*n19*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n19)*n131*pow(n163, n24)*pow(n54, n24)*n86 + n119*n165*n186 + n131*n70);
23794  n403 = n275*n74*(pow(alpha, n1*n29 - n166*n20)*n119*pow(n163, n24)*n20*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n20)*pow(n163, n24)*n31*n47*pow(n54, n24)*n86 + n119*n165*n192 + n158);
23795  n404 = n149*pow(n220, n24)*n74*(pow(alpha, n1*n29 - n166*n21)*n119*pow(n163, n24)*n21*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n21)*pow(n163, n24)*n31*n48*pow(n54, n24)*n86 + n119*n165*n199 + n31*n48*n72);
23796  n405 = xTj*(n103*n248*n312*n74 + n104*n348*n74 + n105*n349*n74 + n106*n250*n309*n74 + n107*n251*n302*n74 + n108*n253*n301*n74 + n109*pow(n205, n24)*n338*n74 - n121*pow(n210, n24)*n308*n74 + n123*n260*n74 + n124*n258*n74 + n125*n2*n242*n74 + n127*n257*n74 + n128*n2*n241*n74 + n129*n256*n74 + n130*n2*n243*n74 - n132*n346*n74 - n133*pow(n213, n24)*n311*n74 + n137*n2*n246*n74 + n148*n347*n74 + n149*n344*n74 + n151*n345*n74 + n152*n239*n74 + n153*n245*n74 + n240*n58*n74*n76 + n244*n72*n74*n78 + n261*n74*n77 + n262*n74*n75 + n263*n74*n82 + n264*n74*n79 + n265*n74*n80 + n266*n74*n81 - n269*n313*n74 + n271*n314*n74 + n273*n310*n74 + n274*n316*n74 + n275*n317*n74);
23797  n406 = n279 + n357 + n405;
23798  n407 = n280 + n281 + n282 + n283 + n284 + n285 + n286 + n287 + n288 + n289 + n290 + n291 + n292 + n293 + n294 + n295 + n296 + n297 + n358 + n359 + n360 + n361 + n362 + n363 + n364 + n365 + n366 + n367 + n368 + n369 + n370 + n371 + n372 + n373 + n374 + n375 + n377 + n388 + n389 + n390 + n391 + n392 + n393 + n394 + n395 + n396 + n397 + n398 + n399 + n400 + n401 + n402 + n403 + n404;
23799  n408 = -n101*n340*n74*(n145*n50 + n165*n192*n50)/n237 + n103*n312*n74*xF[3]*(n124*n50 + n165*n189*n50)/n232 + n104*n254*n304*n74*(n165*n198*n50 + n50*n58*n7) + n105*n249*n315*n74*(n123*n50 + n165*n190*n50) + n106*n252*n309*n74*(n128*n50 + n165*n188*n50) + n107*n255*n302*n74*(n130*n50 + n165*n200*n50) + n108*n337*n354*n74 + n109*n338*n74*(n165*n193*n50 + n50*n57*n6)/n223 - n121*n308*n74*(n137*n50 + n165*n201*n50)/n228 - n132*n306*n74*(n129*n50 + n165*n191*n50)/n226 - n133*n311*n74*(n14*n50*n65 + n165*n195*n50)/n231 - n138*n314*n74*(n165*n202*n50 + n17*n50*n68)/n234 + n148*n307*n74*(n144*n50 + n165*n197*n50)/n227 + n149*n318*n74*(n165*n199*n50 + n21*n50*n72)/n238 + n151*n305*n74*(n140*n50 + n165*n187*n50)/n225 - n268*n339*n74*(n139*n50 + n165*n194*n50) - n270*n313*n74*(n127*n50 + n165*n185*n50) + n272*n316*n74*(n141*n50 + n165*n186*n50) + n407;
23800  n409 = n408*xTj;
23801  NP_b = -n125*n146*n259*n300*n74 - n279 - n29*(1.0*n125*n2*n253*n74*(pow(alpha, -n1*n166 + n51)*n1*n154*n2/n163 + n125*n2) + 0.5*n146*pow(n203, n24)*n74*(-pow(alpha, -n1*n166 + n51)*n142*n154/n163 + n110*n142) - 1.0*n146*n319*n74/n221 + n298 - 0.5*xTj*(n100*n24*n334*n74*xF[7]/n236 + n102*n24*n336*n74*xF[9]/n238 + n103*n248*n74*(pow(alpha, n1*n29 - n15*n166)*n119*n15*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n15*n166)*pow(n163, n24)*n31*n42*pow(n54, n24)*n86 + pow(alpha, -n15*n166 + n51)*n119*n15*n154/n163 + n162) + n104*pow(n206, n24)*n74*xF[12]*(pow(alpha, n1*n29 - n166*n7)*n119*pow(n163, n24)*pow(n54, n24)*n7*n86 - pow(alpha, n1*n29 - n166*n7)*pow(n163, n24)*n31*n34*pow(n54, n24)*n86 + pow(alpha, -n166*n7 + n51)*n119*n154*n7/n163 + n160) + n106*n250*n74*(pow(alpha, n1*n29 - n12*n166)*n119*n12*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n12*n166)*pow(n163, n24)*n31*n39*pow(n54, n24)*n86 + pow(alpha, -n12*n166 + n51)*n119*n12*n154/n163 + n155) + n107*n251*n74*(pow(alpha, n1*n29 - n166*n5)*n119*pow(n163, n24)*n5*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n5)*pow(n163, n24)*n31*n32*pow(n54, n24)*n86 + pow(alpha, -n166*n5 + n51)*n119*n154*n5/n163 + n161) + n109*pow(n205, n24)*n74*xF[11]*(pow(alpha, n1*n29 - n166*n6)*n119*pow(n163, n24)*pow(n54, n24)*n6*n86 - pow(alpha, n1*n29 - n166*n6)*pow(n163, n24)*n31*n33*pow(n54, n24)*n86 + pow(alpha, -n166*n6 + n51)*n119*n154*n6/n163 + n157) + n121*pow(n210, n24)*n74*(pow(alpha, n1*n29 - n11*n166)*n11*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n11*n166)*pow(n163, n24)*n31*n38*pow(n54, n24)*n86 + pow(alpha, -n11*n166 + n51)*n11*n154*n23*n31/n163 + n114*n31*n38) + n121*n24*n353*n74 + n132*pow(n208, n24)*n74*(pow(alpha, n1*n29 - n166*n9)*n143*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n9)*pow(n163, n24)*n23*n31*pow(n54, n24)*n86*n9 + pow(alpha, -n166*n9 + n51)*n154*n23*n31*n9/n163 + n113*n143) + n132*n24*n350*n74 + n133*pow(n213, n24)*n74*(pow(alpha, n1*n29 - n14*n166)*n136*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n14*n166)*n14*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, -n14*n166 + n51)*n14*n154*n23*n31/n163 + n115*n136) + n133*n24*n351*n74 + n138*n24*n352*n74 + n146*pow(n203, n24)*n74*(-pow(alpha, -n1*n166 + n51)*n142*n154/n163 + n110*n142) + n146*n24*n319*n74/n221 + n148*pow(n209, n24)*n74*(pow(alpha, n1*n29 - n10*n166)*n10*n119*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n10*n166)*n135*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n10*n166 + n51)*n10*n119*n154/n163 + n135*n61) + n149*pow(n220, n24)*n74*(pow(alpha, n1*n29 - n166*n21)*n119*pow(n163, n24)*n21*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n21)*pow(n163, n24)*n31*n48*pow(n54, n24)*n86 + pow(alpha, -n166*n21 + n51)*n119*n154*n21/n163 + n31*n48*n72) + pow(n207, n24)*n74*n89*xF[13]*(pow(alpha, n1*n29 - n166*n8)*n134*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n8)*pow(n163, n24)*n23*n31*pow(n54, n24)*n8*n86 + pow(alpha, -n166*n8 + n51)*n154*n23*n31*n8/n163 + n112*n134) + pow(n217, n24)*n74*n99*xF[6]*(pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n18*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n31*n45*pow(n54, n24)*n86 + pow(alpha, -n166*n18 + n51)*n154*n18*n23*n31/n163 + n118*n31*n45) + n24*n249*n333*n74*n99 + n24*n252*n327*n74*n93 + n24*n254*n322*n74*n88 + n24*n255*n320*n74*n84 + n24*n268*n342*n74 + n24*n270*n331*n74 + n24*n355*n74 + n24*n356*n74 + n269*n74*(pow(alpha, n1*n29 - n16*n166)*n16*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n16*n166)*pow(n163, n24)*n31*n43*pow(n54, n24)*n86 + pow(alpha, -n16*n166 + n51)*n154*n16*n23*n31/n163 + n116*n31*n43) + n271*n74*(pow(alpha, n1*n29 - n166*n17)*n119*pow(n163, n24)*n17*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n17)*n126*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n166*n17 + n51)*n119*n154*n17/n163 + n126*n68) + n273*n74*(pow(alpha, n1*n29 - n13*n166)*n119*n13*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n13*n166)*n122*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n13*n166 + n51)*n119*n13*n154/n163 + n122*n64) + n274*n74*(pow(alpha, n1*n29 - n166*n19)*n119*pow(n163, n24)*n19*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n19)*n131*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n166*n19 + n51)*n119*n154*n19/n163 + n131*n70) + n275*n74*(pow(alpha, n1*n29 - n166*n20)*n119*pow(n163, n24)*n20*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n20)*pow(n163, n24)*n31*n47*pow(n54, n24)*n86 + pow(alpha, -n166*n20 + n51)*n119*n154*n20/n163 + n158) + n280 + n281 + n282 + n283 + n284 + n285 + n286 + n287 + n288 + n289 + n290 + n291 + n292 + n293 + n294 + n295 + n296 + n297 + n358 + n359 + n360 + n361 + n362 + n363 + n364 + n365 + n366 + n367 + n368 + n369 + n370 + n371 + n372 + n373 + n374 + n375 + n24*n330*n74*n96*xF[3]/n232 + n24*n325*n74*n91*xF[15]/n227 + n24*n323*n74*n89*xF[13]/n225)) - n74*xTj*(n103*n248*n312 + n104*n348 + n105*n349 + n106*n250*n309 + n107*n251*n302 + n108*n253*n301 + n109*pow(n205, n24)*n338 - n121*pow(n210, n24)*n308 + n123*n260 + n124*n258 + n125*n2*n242 + n127*n257 + n128*n2*n241 + n129*n256 + n130*n2*n243 - n132*n346 - n133*pow(n213, n24)*n311 + n137*n2*n246 + n148*n347 + n149*n344 + n151*n345 + n152*n239 + n153*n245 + n240*n58*n76 + n244*n72*n78 + n261*n77 + n262*n75 + n263*n82 + n264*n79 + n265*n80 + n266*n81 - n269*n313 + n271*n314 + n273*n310 + n274*n316 + n275*n317);
23802  NP_2a = -n74*(pow(alpha, n1*n29)*n0*n108*n142*pow(n300, -n0)*xF[0]/n221 + pow(alpha, n1*n29)*n0*n142*n253*n300 + n108*n156*n253*(-1 + (-n25 + xPj*xTj)/(n163*n167*n54)) - 1.0*n156*n242 + 1.0*xTj*(n0*n2*n23*n253*n53*(pow(alpha, n166*n23 + n51)*n1*n154*n2/n163 + n125*n2) + n100*n24*n334*xF[7]/n236 + n102*n24*n336*xF[9]/n238 + n103*n248*(pow(alpha, n1*n29 - n15*n166)*n119*n15*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n15*n166)*pow(n163, n24)*n31*n42*pow(n54, n24)*n86 + n119*n165*n189 + n162) + n104*pow(n206, n24)*xF[12]*(pow(alpha, n1*n29 - n166*n7)*n119*pow(n163, n24)*pow(n54, n24)*n7*n86 - pow(alpha, n1*n29 - n166*n7)*pow(n163, n24)*n31*n34*pow(n54, n24)*n86 + n119*n165*n198 + n160) + n106*n250*(pow(alpha, n1*n29 - n12*n166)*n119*n12*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n12*n166)*pow(n163, n24)*n31*n39*pow(n54, n24)*n86 + n119*n165*n188 + n155) + n107*n251*(pow(alpha, n1*n29 - n166*n5)*n119*pow(n163, n24)*n5*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n5)*pow(n163, n24)*n31*n32*pow(n54, n24)*n86 + n119*n165*n200 + n161) + n109*pow(n205, n24)*xF[11]*(pow(alpha, n1*n29 - n166*n6)*n119*pow(n163, n24)*pow(n54, n24)*n6*n86 - pow(alpha, n1*n29 - n166*n6)*pow(n163, n24)*n31*n33*pow(n54, n24)*n86 + n119*n165*n193 + n157) + n121*pow(n210, n24)*(pow(alpha, n1*n29 - n11*n166)*n11*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n11*n166)*pow(n163, n24)*n31*n38*pow(n54, n24)*n86 + n114*n31*n38 + n165*n201*n23*n31) + n121*n24*n353 + n122*n261 + n123*pow(n217, n24)*n50*xF[6]*(pow(alpha, -n166*n18 + n51)*n154*n18*n2/n163 + n123*n2) + n124*n248*n50*(pow(alpha, -n15*n166 + n51)*n15*n154*n2/n163 + n124*n2) + n126*n262 + n127*pow(n215, n24)*n50*xF[4]*(pow(alpha, -n16*n166 + n51)*n154*n16*n2/n163 + n127*n2) + n128*n250*n50*(pow(alpha, -n12*n166 + n51)*n12*n154*n2/n163 + n128*n2) + n129*pow(n208, n24)*n50*xF[14]*(pow(alpha, -n166*n9 + n51)*n154*n2*n9/n163 + n129*n2) + n130*n251*n50*(pow(alpha, -n166*n5 + n51)*n154*n2*n5/n163 + n130*n2) + n131*n263 + n132*pow(n208, n24)*(pow(alpha, n1*n29 - n166*n9)*n143*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n9)*pow(n163, n24)*n23*n31*pow(n54, n24)*n86*n9 + n113*n143 + n165*n191*n23*n31) + n132*n24*n350 + n133*pow(n213, n24)*(pow(alpha, n1*n29 - n14*n166)*n136*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n14*n166)*n14*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + n115*n136 + n165*n195*n23*n31) + n133*n24*n351 + n134*n264 + n135*n266 + n136*n265 + n137*pow(n210, n24)*n50*xF[16]*(pow(alpha, -n11*n166 + n51)*n11*n154*n2/n163 + n137*n2) + n138*n24*n352 + n139*pow(n212, n24)*n50*xF[1]*(pow(alpha, -n13*n166 + n51)*n154*n77/n163 + n64*n77) + n14*pow(n213, n24)*n50*n65*xF[2]*(pow(alpha, -n14*n166 + n51)*n154*n80/n163 + n65*n80) + n140*pow(n207, n24)*n50*xF[13]*(pow(alpha, -n166*n8 + n51)*n154*n79/n163 + n59*n79) + n141*pow(n218, n24)*n50*xF[7]*(pow(alpha, -n166*n19 + n51)*n154*n82/n163 + n70*n82) + n143*n267 + n144*pow(n209, n24)*n50*xF[15]*(pow(alpha, -n10*n166 + n51)*n154*n81/n163 + n61*n81) + n145*pow(n219, n24)*n50*xF[8]*(pow(alpha, -n166*n20 + n51)*n154*n2*n20/n163 + n153) + n146*pow(n203, n24)*n343 + n146*n24*n319/n221 + n148*pow(n209, n24)*(pow(alpha, n1*n29 - n10*n166)*n10*n119*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n10*n166)*n135*pow(n163, n24)*pow(n54, n24)*n86 + n119*n165*n197 + n135*n61) + n149*pow(n220, n24)*(pow(alpha, n1*n29 - n166*n21)*n119*pow(n163, n24)*n21*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n21)*pow(n163, n24)*n31*n48*pow(n54, n24)*n86 + n119*n165*n199 + n31*n48*n72) + n150*pow(n220, n24)*n50*(pow(alpha, -n166*n21 + n51)*n154*n78/n163 + n72*n78) + n155*n241 + n156*n242 + n157*n239 + n158*n245 + n159*n246 + n160*n240 + n161*n243 + n162*n247 + n17*pow(n216, n24)*n50*n68*xF[5]*(pow(alpha, -n166*n17 + n51)*n154*n75/n163 + n68*n75) + pow(n205, n24)*n50*n57*n6*xF[11]*(pow(alpha, -n166*n6 + n51)*n154*n2*n6/n163 + n152) + pow(n206, n24)*n50*n58*n7*xF[12]*(pow(alpha, -n166*n7 + n51)*n154*n76/n163 + n58*n76) + pow(n207, n24)*n89*xF[13]*(pow(alpha, n1*n29 - n166*n8)*n134*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n8)*pow(n163, n24)*n23*n31*pow(n54, n24)*n8*n86 + n112*n134 + n165*n187*n23*n31) + pow(n217, n24)*n99*xF[6]*(pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n18*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n31*n45*pow(n54, n24)*n86 + n118*n31*n45 + n165*n190*n23*n31) + n24*n249*n333*n99 + n24*n252*n327*n93 + n24*n254*n322*n88 + n24*n255*n320*n84 + n24*n268*n342 + n24*n270*n331 + n24*n355 + n24*n356 + n269*(pow(alpha, n1*n29 - n16*n166)*n16*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n16*n166)*pow(n163, n24)*n31*n43*pow(n54, n24)*n86 + n116*n31*n43 + n165*n185*n23*n31) + n271*(pow(alpha, n1*n29 - n166*n17)*n119*pow(n163, n24)*n17*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n17)*n126*pow(n163, n24)*pow(n54, n24)*n86 + n119*n165*n202 + n126*n68) + n273*(pow(alpha, n1*n29 - n13*n166)*n119*n13*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n13*n166)*n122*pow(n163, n24)*pow(n54, n24)*n86 + n119*n165*n194 + n122*n64) + n274*(pow(alpha, n1*n29 - n166*n19)*n119*pow(n163, n24)*n19*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n19)*n131*pow(n163, n24)*pow(n54, n24)*n86 + n119*n165*n186 + n131*n70) + n275*(pow(alpha, n1*n29 - n166*n20)*n119*pow(n163, n24)*n20*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n20)*pow(n163, n24)*n31*n47*pow(n54, n24)*n86 + n119*n165*n192 + n158) + n276 + n277 + n278 + n24*n330*n96*xF[3]/n232 + n24*n325*n91*xF[15]/n227 + n24*n323*n89*xF[13]/n225));
23803  NP_sqrt_base = (-NP0*n406 - n108*n74*xF[0]/(-n108 - n196 - 1) - n27*(-n100*n74*xF[7]/(n100 - 1 + pow(alpha, -n19*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n101*n74*xF[8]/(n101 - 1 + pow(alpha, -n20*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n102*n74*xF[9]/(n102 - 1 + pow(alpha, -n21*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n121*n74/(n92 - 1 + pow(alpha, -n11*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n132*n74/(n90 - 1 + pow(alpha, -n9*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n133*n74/(n95 - 1 + pow(alpha, -n14*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n138*n74/(n98 - 1 + pow(alpha, -n17*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n146*n74/(pow(alpha, n23*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1)) + n83 - 1) - n74*n84*xF[10]/(n84 - 1 + pow(alpha, -n5*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n87*xF[11]/(n87 - 1 + pow(alpha, -n6*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n88*xF[12]/(n88 - 1 + pow(alpha, -n7*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n89*xF[13]/(n89 - 1 + pow(alpha, -n8*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n91*xF[15]/(n91 - 1 + pow(alpha, -n10*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n93*xF[17]/(n93 - 1 + pow(alpha, -n12*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n94*xF[1]/(n94 - 1 + pow(alpha, -n13*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n96*xF[3]/(n96 - 1 + pow(alpha, -n15*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n97*xF[4]/(n97 - 1 + pow(alpha, -n16*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1))) - n74*n99*xF[6]/(n99 - 1 + pow(alpha, -n18*(n120*(n164 - log(n110*(n25 + n28*xTj)/(n25 - xF[0]*xTj) + 1)) + 1)))) - pow(NP0, -n0)*(1.0*n125*n2*n253*n301*n74 - 0.5*n146*n301*n354*n74 + 0.5*n280 + 0.5*n377 - 0.5*n409))*(-n0*n27*(-n101*n74*xF[8]*(pow(alpha, -n166*n20 + n51)*n154*n2*n20/n163 + n153)*(pow(alpha, -n166*n20 + n51)*n154*n20*n50/n163 + n145*n50)/n237 + n103*n248*n74*(pow(alpha, n1*n29 - n15*n166)*n119*n15*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n15*n166)*pow(n163, n24)*n31*n42*pow(n54, n24)*n86 + pow(alpha, -n15*n166 + n51)*n119*n15*n154/n163 + n162) + n103*n74*xF[3]*(pow(alpha, -n15*n166 + n51)*n15*n154*n2/n163 + n124*n2)*(pow(alpha, -n15*n166 + n51)*n15*n154*n50/n163 + n124*n50)/n232 + n104*pow(n206, n24)*n74*xF[12]*(pow(alpha, n1*n29 - n166*n7)*n119*pow(n163, n24)*pow(n54, n24)*n7*n86 - pow(alpha, n1*n29 - n166*n7)*pow(n163, n24)*n31*n34*pow(n54, n24)*n86 + pow(alpha, -n166*n7 + n51)*n119*n154*n7/n163 + n160) + n104*n254*n74*(pow(alpha, -n166*n7 + n51)*n154*n76/n163 + n58*n76)*(pow(alpha, -n166*n7 + n51)*n154*n50*n7/n163 + n50*n58*n7) + n105*n249*n74*(pow(alpha, -n166*n18 + n51)*n154*n18*n2/n163 + n123*n2)*(pow(alpha, -n166*n18 + n51)*n154*n18*n50/n163 + n123*n50) + n106*n250*n74*(pow(alpha, n1*n29 - n12*n166)*n119*n12*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n12*n166)*pow(n163, n24)*n31*n39*pow(n54, n24)*n86 + pow(alpha, -n12*n166 + n51)*n119*n12*n154/n163 + n155) + n106*n252*n74*(pow(alpha, -n12*n166 + n51)*n12*n154*n2/n163 + n128*n2)*(pow(alpha, -n12*n166 + n51)*n12*n154*n50/n163 + n128*n50) + n107*n251*n74*(pow(alpha, n1*n29 - n166*n5)*n119*pow(n163, n24)*n5*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n5)*pow(n163, n24)*n31*n32*pow(n54, n24)*n86 + pow(alpha, -n166*n5 + n51)*n119*n154*n5/n163 + n161) + n107*n255*n74*(pow(alpha, -n166*n5 + n51)*n154*n2*n5/n163 + n130*n2)*(pow(alpha, -n166*n5 + n51)*n154*n5*n50/n163 + n130*n50) + n108*n74*xF[0]*(pow(alpha, -n1*n166 + n51)*n1*n154*n2/n163 + n125*n2)*(pow(alpha, -n1*n166 + n51)*n0*n154*n2*n23/n163 + n0*n2*n23*n53)/n221 + n109*pow(n205, n24)*n74*xF[11]*(pow(alpha, n1*n29 - n166*n6)*n119*pow(n163, n24)*pow(n54, n24)*n6*n86 - pow(alpha, n1*n29 - n166*n6)*pow(n163, n24)*n31*n33*pow(n54, n24)*n86 + pow(alpha, -n166*n6 + n51)*n119*n154*n6/n163 + n157) + n109*n74*xF[11]*(pow(alpha, -n166*n6 + n51)*n154*n2*n6/n163 + n152)*(pow(alpha, -n166*n6 + n51)*n154*n50*n6/n163 + n50*n57*n6)/n223 + n121*pow(n210, n24)*n74*(pow(alpha, n1*n29 - n11*n166)*n11*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n11*n166)*pow(n163, n24)*n31*n38*pow(n54, n24)*n86 + pow(alpha, -n11*n166 + n51)*n11*n154*n23*n31/n163 + n114*n31*n38) - n121*n74*(pow(alpha, -n11*n166 + n51)*n11*n154*n2/n163 + n137*n2)*(pow(alpha, -n11*n166 + n51)*n11*n154*n50/n163 + n137*n50)/n228 + n132*pow(n208, n24)*n74*(pow(alpha, n1*n29 - n166*n9)*n143*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n9)*pow(n163, n24)*n23*n31*pow(n54, n24)*n86*n9 + pow(alpha, -n166*n9 + n51)*n154*n23*n31*n9/n163 + n113*n143) - n132*n74*(pow(alpha, -n166*n9 + n51)*n154*n2*n9/n163 + n129*n2)*(pow(alpha, -n166*n9 + n51)*n154*n50*n9/n163 + n129*n50)/n226 + n133*pow(n213, n24)*n74*(pow(alpha, n1*n29 - n14*n166)*n136*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n14*n166)*n14*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, -n14*n166 + n51)*n14*n154*n23*n31/n163 + n115*n136) - n133*n74*(pow(alpha, -n14*n166 + n51)*n154*n80/n163 + n65*n80)*(pow(alpha, -n14*n166 + n51)*n14*n154*n50/n163 + n14*n50*n65)/n231 - n138*n74*(pow(alpha, -n166*n17 + n51)*n154*n75/n163 + n68*n75)*(pow(alpha, -n166*n17 + n51)*n154*n17*n50/n163 + n17*n50*n68)/n234 + n146*pow(n203, n24)*n74*(pow(alpha, -n1*n166 + n51)*n142*(-n25 + xPj*xTj)/(n163*n54) + n110*n142) + n148*pow(n209, n24)*n74*(pow(alpha, n1*n29 - n10*n166)*n10*n119*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n10*n166)*n135*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n10*n166 + n51)*n10*n119*n154/n163 + n135*n61) + n148*n74*(pow(alpha, -n10*n166 + n51)*n154*n81/n163 + n61*n81)*(pow(alpha, -n10*n166 + n51)*n10*n154*n50/n163 + n144*n50)/n227 + n149*pow(n220, n24)*n74*(pow(alpha, n1*n29 - n166*n21)*n119*pow(n163, n24)*n21*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n21)*pow(n163, n24)*n31*n48*pow(n54, n24)*n86 + pow(alpha, -n166*n21 + n51)*n119*n154*n21/n163 + n31*n48*n72) + n149*n74*(pow(alpha, -n166*n21 + n51)*n154*n78/n163 + n72*n78)*(pow(alpha, -n166*n21 + n51)*n154*n21*n50/n163 + n21*n50*n72)/n238 + n151*n74*(pow(alpha, -n166*n8 + n51)*n154*n79/n163 + n59*n79)*(pow(alpha, -n166*n8 + n51)*n154*n50*n8/n163 + n140*n50)/n225 + pow(n207, n24)*n74*n89*xF[13]*(pow(alpha, n1*n29 - n166*n8)*n134*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n8)*pow(n163, n24)*n23*n31*pow(n54, n24)*n8*n86 + pow(alpha, -n166*n8 + n51)*n154*n23*n31*n8/n163 + n112*n134) + pow(n217, n24)*n74*n99*xF[6]*(pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n18*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n31*n45*pow(n54, n24)*n86 + pow(alpha, -n166*n18 + n51)*n154*n18*n23*n31/n163 + n118*n31*n45) - n268*n74*xF[1]*(pow(alpha, -n13*n166 + n51)*n154*n77/n163 + n64*n77)*(pow(alpha, -n13*n166 + n51)*n13*n154*n50/n163 + n139*n50) + n269*n74*(pow(alpha, n1*n29 - n16*n166)*n16*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n16*n166)*pow(n163, n24)*n31*n43*pow(n54, n24)*n86 + pow(alpha, -n16*n166 + n51)*n154*n16*n23*n31/n163 + n116*n31*n43) - n270*n74*(pow(alpha, -n16*n166 + n51)*n154*n16*n2/n163 + n127*n2)*(pow(alpha, -n16*n166 + n51)*n154*n16*n50/n163 + n127*n50) + n271*n74*(pow(alpha, n1*n29 - n166*n17)*n119*pow(n163, n24)*n17*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n17)*n126*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n166*n17 + n51)*n119*n154*n17/n163 + n126*n68) + n272*n74*(pow(alpha, -n166*n19 + n51)*n154*n82/n163 + n70*n82)*(pow(alpha, -n166*n19 + n51)*n154*n19*n50/n163 + n141*n50) + n273*n74*(pow(alpha, n1*n29 - n13*n166)*n119*n13*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n13*n166)*n122*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n13*n166 + n51)*n119*n13*n154/n163 + n122*n64) + n274*n74*(pow(alpha, n1*n29 - n166*n19)*n119*pow(n163, n24)*n19*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n19)*n131*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n166*n19 + n51)*n119*n154*n19/n163 + n131*n70) + n275*n74*(pow(alpha, n1*n29 - n166*n20)*n119*pow(n163, n24)*n20*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n20)*pow(n163, n24)*n31*n47*pow(n54, n24)*n86 + pow(alpha, -n166*n20 + n51)*n119*n154*n20/n163 + n158) + n280 + n281 + n282 + n283 + n284 + n285 + n286 + n287 + n288 + n289 + n290 + n291 + n292 + n293 + n294 + n295 + n296 + n297 + n358 + n359 + n360 + n361 + n362 + n363 + n364 + n365 + n366 + n367 + n368 + n369 + n370 + n371 + n372 + n373 + n374 + n375) - n0*n280 - n0*n377 + 4.0*n125*n2*n253*n301*n74 - 4.0*n146*n319*n74/n221) + pow(-n29*(1.0*n125*n2*n253*n74*(pow(alpha, -n1*n166 + n51)*n1*n154*n2/n163 + n125*n2) + 0.5*n146*pow(n203, n24)*n74*(-pow(alpha, -n1*n166 + n51)*n142*n154/n163 + n110*n142) - 0.5*n146*n74*(pow(alpha, -n1*n166 + n51)*n1*n154*n2/n163 + n125*n2)*(pow(alpha, -n1*n166 + n51)*n0*n154*n2*n23/n163 + n0*n2*n23*n53)/n221 + n298 - 0.5*xTj*(-n101*n74*xF[8]*(pow(alpha, -n166*n20 + n51)*n154*n2*n20/n163 + n153)*(pow(alpha, -n166*n20 + n51)*n154*n20*n50/n163 + n145*n50)/n237 + n103*n248*n74*(pow(alpha, n1*n29 - n15*n166)*n119*n15*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n15*n166)*pow(n163, n24)*n31*n42*pow(n54, n24)*n86 + pow(alpha, -n15*n166 + n51)*n119*n15*n154/n163 + n162) + n103*n74*xF[3]*(pow(alpha, -n15*n166 + n51)*n15*n154*n2/n163 + n124*n2)*(pow(alpha, -n15*n166 + n51)*n15*n154*n50/n163 + n124*n50)/n232 + n104*pow(n206, n24)*n74*xF[12]*(pow(alpha, n1*n29 - n166*n7)*n119*pow(n163, n24)*pow(n54, n24)*n7*n86 - pow(alpha, n1*n29 - n166*n7)*pow(n163, n24)*n31*n34*pow(n54, n24)*n86 + pow(alpha, -n166*n7 + n51)*n119*n154*n7/n163 + n160) + n104*n254*n74*(pow(alpha, -n166*n7 + n51)*n154*n76/n163 + n58*n76)*(pow(alpha, -n166*n7 + n51)*n154*n50*n7/n163 + n50*n58*n7) + n105*n249*n74*(pow(alpha, -n166*n18 + n51)*n154*n18*n2/n163 + n123*n2)*(pow(alpha, -n166*n18 + n51)*n154*n18*n50/n163 + n123*n50) + n106*n250*n74*(pow(alpha, n1*n29 - n12*n166)*n119*n12*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n12*n166)*pow(n163, n24)*n31*n39*pow(n54, n24)*n86 + pow(alpha, -n12*n166 + n51)*n119*n12*n154/n163 + n155) + n106*n252*n74*(pow(alpha, -n12*n166 + n51)*n12*n154*n2/n163 + n128*n2)*(pow(alpha, -n12*n166 + n51)*n12*n154*n50/n163 + n128*n50) + n107*n251*n74*(pow(alpha, n1*n29 - n166*n5)*n119*pow(n163, n24)*n5*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n5)*pow(n163, n24)*n31*n32*pow(n54, n24)*n86 + pow(alpha, -n166*n5 + n51)*n119*n154*n5/n163 + n161) + n107*n255*n74*(pow(alpha, -n166*n5 + n51)*n154*n2*n5/n163 + n130*n2)*(pow(alpha, -n166*n5 + n51)*n154*n5*n50/n163 + n130*n50) + n108*n74*xF[0]*(pow(alpha, -n1*n166 + n51)*n1*n154*n2/n163 + n125*n2)*(pow(alpha, -n1*n166 + n51)*n0*n154*n2*n23/n163 + n0*n2*n23*n53)/n221 + n109*pow(n205, n24)*n74*xF[11]*(pow(alpha, n1*n29 - n166*n6)*n119*pow(n163, n24)*pow(n54, n24)*n6*n86 - pow(alpha, n1*n29 - n166*n6)*pow(n163, n24)*n31*n33*pow(n54, n24)*n86 + pow(alpha, -n166*n6 + n51)*n119*n154*n6/n163 + n157) + n109*n74*xF[11]*(pow(alpha, -n166*n6 + n51)*n154*n2*n6/n163 + n152)*(pow(alpha, -n166*n6 + n51)*n154*n50*n6/n163 + n50*n57*n6)/n223 + n121*pow(n210, n24)*n74*(pow(alpha, n1*n29 - n11*n166)*n11*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n11*n166)*pow(n163, n24)*n31*n38*pow(n54, n24)*n86 + pow(alpha, -n11*n166 + n51)*n11*n154*n23*n31/n163 + n114*n31*n38) - n121*n74*(pow(alpha, -n11*n166 + n51)*n11*n154*n2/n163 + n137*n2)*(pow(alpha, -n11*n166 + n51)*n11*n154*n50/n163 + n137*n50)/n228 + n132*pow(n208, n24)*n74*(pow(alpha, n1*n29 - n166*n9)*n143*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n9)*pow(n163, n24)*n23*n31*pow(n54, n24)*n86*n9 + pow(alpha, -n166*n9 + n51)*n154*n23*n31*n9/n163 + n113*n143) - n132*n74*(pow(alpha, -n166*n9 + n51)*n154*n2*n9/n163 + n129*n2)*(pow(alpha, -n166*n9 + n51)*n154*n50*n9/n163 + n129*n50)/n226 + n133*pow(n213, n24)*n74*(pow(alpha, n1*n29 - n14*n166)*n136*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n14*n166)*n14*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, -n14*n166 + n51)*n14*n154*n23*n31/n163 + n115*n136) - n133*n74*(pow(alpha, -n14*n166 + n51)*n154*n80/n163 + n65*n80)*(pow(alpha, -n14*n166 + n51)*n14*n154*n50/n163 + n14*n50*n65)/n231 - n138*n74*(pow(alpha, -n166*n17 + n51)*n154*n75/n163 + n68*n75)*(pow(alpha, -n166*n17 + n51)*n154*n17*n50/n163 + n17*n50*n68)/n234 + n146*pow(n203, n24)*n74*(-pow(alpha, -n1*n166 + n51)*n142*n154/n163 + n110*n142) + n148*pow(n209, n24)*n74*(pow(alpha, n1*n29 - n10*n166)*n10*n119*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n10*n166)*n135*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n10*n166 + n51)*n10*n119*n154/n163 + n135*n61) + n148*n74*(pow(alpha, -n10*n166 + n51)*n154*n81/n163 + n61*n81)*(pow(alpha, -n10*n166 + n51)*n10*n154*n50/n163 + n144*n50)/n227 + n149*pow(n220, n24)*n74*(pow(alpha, n1*n29 - n166*n21)*n119*pow(n163, n24)*n21*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n21)*pow(n163, n24)*n31*n48*pow(n54, n24)*n86 + pow(alpha, -n166*n21 + n51)*n119*n154*n21/n163 + n31*n48*n72) + n149*n74*(pow(alpha, -n166*n21 + n51)*n154*n78/n163 + n72*n78)*(pow(alpha, -n166*n21 + n51)*n154*n21*n50/n163 + n21*n50*n72)/n238 + n151*n74*(pow(alpha, -n166*n8 + n51)*n154*n79/n163 + n59*n79)*(pow(alpha, -n166*n8 + n51)*n154*n50*n8/n163 + n140*n50)/n225 + pow(n207, n24)*n74*n89*xF[13]*(pow(alpha, n1*n29 - n166*n8)*n134*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n8)*pow(n163, n24)*n23*n31*pow(n54, n24)*n8*n86 + pow(alpha, -n166*n8 + n51)*n154*n23*n31*n8/n163 + n112*n134) + pow(n217, n24)*n74*n99*xF[6]*(pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n18*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n166*n18)*pow(n163, n24)*n31*n45*pow(n54, n24)*n86 + pow(alpha, -n166*n18 + n51)*n154*n18*n23*n31/n163 + n118*n31*n45) - n268*n74*xF[1]*(pow(alpha, -n13*n166 + n51)*n154*n77/n163 + n64*n77)*(pow(alpha, -n13*n166 + n51)*n13*n154*n50/n163 + n139*n50) + n269*n74*(pow(alpha, n1*n29 - n16*n166)*n16*pow(n163, n24)*n23*n31*pow(n54, n24)*n86 + pow(alpha, n1*n29 - n16*n166)*pow(n163, n24)*n31*n43*pow(n54, n24)*n86 + pow(alpha, -n16*n166 + n51)*n154*n16*n23*n31/n163 + n116*n31*n43) - n270*n74*(pow(alpha, -n16*n166 + n51)*n154*n16*n2/n163 + n127*n2)*(pow(alpha, -n16*n166 + n51)*n154*n16*n50/n163 + n127*n50) + n271*n74*(pow(alpha, n1*n29 - n166*n17)*n119*pow(n163, n24)*n17*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n17)*n126*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n166*n17 + n51)*n119*n154*n17/n163 + n126*n68) + n272*n74*(pow(alpha, -n166*n19 + n51)*n154*n82/n163 + n70*n82)*(pow(alpha, -n166*n19 + n51)*n154*n19*n50/n163 + n141*n50) + n273*n74*(pow(alpha, n1*n29 - n13*n166)*n119*n13*pow(n163, n24)*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n13*n166)*n122*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n13*n166 + n51)*n119*n13*n154/n163 + n122*n64) + n274*n74*(pow(alpha, n1*n29 - n166*n19)*n119*pow(n163, n24)*n19*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n19)*n131*pow(n163, n24)*pow(n54, n24)*n86 + pow(alpha, -n166*n19 + n51)*n119*n154*n19/n163 + n131*n70) + n275*n74*(pow(alpha, n1*n29 - n166*n20)*n119*pow(n163, n24)*n20*pow(n54, n24)*n86 - pow(alpha, n1*n29 - n166*n20)*pow(n163, n24)*n31*n47*pow(n54, n24)*n86 + pow(alpha, -n166*n20 + n51)*n119*n154*n20/n163 + n158) + n280 + n281 + n282 + n283 + n284 + n285 + n286 + n287 + n288 + n289 + n290 + n291 + n292 + n293 + n294 + n295 + n296 + n297 + n358 + n359 + n360 + n361 + n362 + n363 + n364 + n365 + n366 + n367 + n368 + n369 + n370 + n371 + n372 + n373 + n374 + n375)) - n406, -n0);
23804  NP_sqrt_base = fabs(NP_sqrt_base);
23805  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
23806  NT1 = n120*(n164 - log(-pow(alpha, NP1*n1)*n154 + 1));
23807  g0 = MW[1] - Mstar;
23808  g1 = MW[0] - Mstar;
23809  g2 = NT1 + 1;
23810  g3 = xPj - xTj;
23811  g4 = MW[10] - Mstar;
23812  g5 = MW[11] - Mstar;
23813  g6 = MW[12] - Mstar;
23814  g7 = MW[13] - Mstar;
23815  g8 = MW[14] - Mstar;
23816  g9 = MW[15] - Mstar;
23817  g10 = MW[16] - Mstar;
23818  g11 = MW[17] - Mstar;
23819  g12 = MW[2] - Mstar;
23820  g13 = MW[3] - Mstar;
23821  g14 = MW[4] - Mstar;
23822  g15 = MW[5] - Mstar;
23823  g16 = MW[6] - Mstar;
23824  g17 = MW[7] - Mstar;
23825  g18 = MW[8] - Mstar;
23826  g19 = MW[9] - Mstar;
23827  g20 = xF[0] - xTj;
23828  g21 = xF[0] - xPj;
23829  g22 = -xTj;
23830  g23 = 1.0*xF[4];
23831  g24 = 1.0*xF[16];
23832  g25 = xPj/xF[1];
23833  g26 = pow(alpha, -g1);
23834  g27 = pow(alpha, -g4);
23835  g28 = pow(alpha, -g5);
23836  g29 = pow(alpha, -g6);
23837  g30 = pow(alpha, -g7);
23838  g31 = pow(alpha, -g8);
23839  g32 = pow(alpha, -g9);
23840  g33 = pow(alpha, -g10);
23841  g34 = pow(alpha, -g11);
23842  g35 = pow(alpha, -g0);
23843  g36 = pow(alpha, -g12);
23844  g37 = pow(alpha, -g13);
23845  g38 = pow(alpha, -g14);
23846  g39 = pow(alpha, -g15);
23847  g40 = pow(alpha, -g16);
23848  g41 = pow(alpha, -g17);
23849  g42 = pow(alpha, -g18);
23850  g43 = pow(alpha, -g19);
23851  g44 = log(xF[0]/xF[1]);
23852  g45 = -g2;
23853  g46 = pow(alpha, NP1*g0);
23854  g47 = pow(alpha, NP1*g1);
23855  g48 = pow(alpha, NP1*g4);
23856  g49 = log(g26);
23857  g50 = pow(alpha, NP1*g5);
23858  g51 = pow(alpha, NP1*g6);
23859  g52 = pow(alpha, NP1*g7);
23860  g53 = pow(alpha, NP1*g8);
23861  g54 = pow(alpha, NP1*g9);
23862  g55 = pow(alpha, NP1*g10);
23863  g56 = pow(alpha, NP1*g11);
23864  g57 = pow(alpha, NP1*g12);
23865  g58 = pow(alpha, NP1*g13);
23866  g59 = pow(alpha, NP1*g14);
23867  g60 = pow(alpha, NP1*g15);
23868  g61 = pow(alpha, NP1*g16);
23869  g62 = pow(alpha, NP1*g17);
23870  g63 = pow(alpha, NP1*g18);
23871  g64 = pow(alpha, NP1*g19);
23872  g65 = -g44;
23873  g66 = g20/g3;
23874  g67 = g3/g20;
23875  g68 = -g46 + 1;
23876  g69 = -g46 + 1;
23877  g70 = -g47 + 1;
23878  g71 = -g48 + 1;
23879  g72 = -g50 + 1;
23880  g73 = -g51 + 1;
23881  g74 = -g52 + 1;
23882  g75 = -g53 + 1;
23883  g76 = -g54 + 1;
23884  g77 = -g55 + 1;
23885  g78 = -g56 + 1;
23886  g79 = -g57 + 1;
23887  g80 = -g58 + 1;
23888  g81 = -g59 + 1;
23889  g82 = -g60 + 1;
23890  g83 = -g61 + 1;
23891  g84 = -g62 + 1;
23892  g85 = -g63 + 1;
23893  g86 = -g64 + 1;
23894  g87 = -g47;
23895  g88 = -g48;
23896  g89 = -g50;
23897  g90 = -g51;
23898  g91 = -g52;
23899  g92 = -g53;
23900  g93 = -g54;
23901  g94 = -g55;
23902  g95 = -g56;
23903  g96 = -g57;
23904  g97 = -g58;
23905  g98 = -g59;
23906  g99 = -g60;
23907  g100 = -g61;
23908  g101 = -g62;
23909  g102 = -g63;
23910  g103 = -g64;
23911  g104 = -1.0*g44;
23912  g105 = -g3/g21;
23913  g106 = g21/(g3*xF[1]);
23914  g107 = g104*xF[0];
23915  g108 = g104*xF[10];
23916  g109 = g104*xF[11];
23917  g110 = g104*xF[12];
23918  g111 = g104*xF[13];
23919  g112 = g104*xF[14];
23920  g113 = g104*xF[15];
23921  g114 = g104*xF[16];
23922  g115 = g104*xF[17];
23923  g116 = g104*xF[1];
23924  g117 = g104*xF[2];
23925  g118 = g104*xF[3];
23926  g119 = g104*xF[4];
23927  g120 = g104*xF[5];
23928  g121 = g104*xF[6];
23929  g122 = g104*xF[7];
23930  g123 = g104*xF[8];
23931  g124 = g104*xF[9];
23932  g125 = pow(alpha, g0*g45) - 1;
23933  g126 = pow(alpha, g0*g45) - 1;
23934  g127 = pow(alpha, g1*g45) - 1;
23935  g128 = pow(alpha, g4*g45) - 1;
23936  g129 = pow(alpha, g45*g5) - 1;
23937  g130 = pow(alpha, g45*g6) - 1;
23938  g131 = pow(alpha, g45*g7) - 1;
23939  g132 = pow(alpha, g45*g8) - 1;
23940  g133 = pow(alpha, g45*g9) - 1;
23941  g134 = pow(alpha, g10*g45) - 1;
23942  g135 = pow(alpha, g11*g45) - 1;
23943  g136 = pow(alpha, g12*g45) - 1;
23944  g137 = pow(alpha, g13*g45) - 1;
23945  g138 = pow(alpha, g14*g45) - 1;
23946  g139 = pow(alpha, g15*g45) - 1;
23947  g140 = pow(alpha, g16*g45) - 1;
23948  g141 = pow(alpha, g17*g45) - 1;
23949  g142 = pow(alpha, g18*g45) - 1;
23950  g143 = pow(alpha, g19*g45) - 1;
23951  g144 = -pow(alpha, g1*g45);
23952  g145 = -pow(alpha, g4*g45);
23953  g146 = -pow(alpha, g45*g5);
23954  g147 = -pow(alpha, g45*g6);
23955  g148 = -pow(alpha, g45*g7);
23956  g149 = -pow(alpha, g45*g8);
23957  g150 = -pow(alpha, g45*g9);
23958  g151 = -pow(alpha, g10*g45);
23959  g152 = -pow(alpha, g11*g45);
23960  g153 = -pow(alpha, g12*g45);
23961  g154 = -pow(alpha, g13*g45);
23962  g155 = -pow(alpha, g14*g45);
23963  g156 = -pow(alpha, g15*g45);
23964  g157 = -pow(alpha, g16*g45);
23965  g158 = -pow(alpha, g17*g45);
23966  g159 = -pow(alpha, g18*g45);
23967  g160 = -pow(alpha, g19*g45);
23968  g161 = g126 + g69;
23969  g162 = -g144 - g47;
23970  g163 = -g145 - g48;
23971  g164 = -g146 - g50;
23972  g165 = -g147 - g51;
23973  g166 = -g148 - g52;
23974  g167 = -g149 - g53;
23975  g168 = -g150 - g54;
23976  g169 = -g151 - g55;
23977  g170 = -g152 - g56;
23978  g171 = -g153 - g57;
23979  g172 = -g154 - g58;
23980  g173 = -g155 - g59;
23981  g174 = -g156 - g60;
23982  g175 = -g157 - g61;
23983  g176 = -g158 - g62;
23984  g177 = -g159 - g63;
23985  g178 = -g160 - g64;
23986  g179 = pow(alpha, g1*g45) + g87;
23987  g180 = g126 + g69;
23988  g181 = pow(alpha, g4*g45) + g88;
23989  g182 = pow(alpha, g45*g5) + g89;
23990  g183 = pow(alpha, g45*g6) + g90;
23991  g184 = pow(alpha, g45*g7) + g91;
23992  g185 = pow(alpha, g45*g8) + g92;
23993  g186 = pow(alpha, g45*g9) + g93;
23994  g187 = pow(alpha, g10*g45) + g94;
23995  g188 = pow(alpha, g11*g45) + g95;
23996  g189 = pow(alpha, g12*g45) + g96;
23997  g190 = pow(alpha, g13*g45) + g97;
23998  g191 = pow(alpha, g14*g45) + g98;
23999  g192 = pow(alpha, g15*g45) + g99;
24000  g193 = pow(alpha, g16*g45) + g100;
24001  g194 = pow(alpha, g17*g45) + g101;
24002  g195 = pow(alpha, g18*g45) + g102;
24003  g196 = pow(alpha, g19*g45) + g103;
24004  g197 = xF[9]/g196;
24005  g198 = xF[8]/g195;
24006  g199 = xF[11]/g182;
24007  g200 = xF[1]/g180;
24008  g201 = xF[10]/g181;
24009  g202 = xF[17]/g188;
24010  g203 = xF[15]/g186;
24011  g204 = xF[3]/g190;
24012  g205 = xF[7]/g194;
24013  g206 = xF[12]/g183;
24014  g207 = xF[13]/g184;
24015  g208 = xF[6]/g193;
24016  g209 = xF[14]/g185;
24017  g210 = xF[5]/g192;
24018  g211 = xF[2]/g189;
24019  g212 = xF[0]/g179;
24020  g213 = xF[4]/g173;
24021  g214 = xF[17]/g170;
24022  g215 = xF[0]/g162;
24023  g216 = xF[16]/g169;
24024  g217 = xF[9]/g178;
24025  g218 = xF[12]/g165;
24026  g219 = xF[15]/g168;
24027  g220 = xF[6]/g175;
24028  g221 = xF[2]/g171;
24029  g222 = xF[13]/g166;
24030  g223 = xF[11]/g164;
24031  g224 = xF[3]/g172;
24032  g225 = xF[5]/g174;
24033  g226 = xF[1]/g161;
24034  g227 = xF[14]/g167;
24035  g228 = xF[8]/g177;
24036  g229 = xF[10]/g163;
24037  g230 = xF[7]/g176;
24038  g231 = g24/g169;
24039  g232 = 1.0*g215;
24040  g233 = 1.0*g218;
24041  g234 = 1.0*g219;
24042  g235 = 1.0*g220;
24043  g236 = 1.0*g222;
24044  g237 = 1.0*g221;
24045  g238 = 1.0*g225;
24046  g239 = 1.0*g227;
24047  g240 = 1.0*g223;
24048  g241 = 1.0*g228;
24049  g242 = 1.0*g214;
24050  g243 = 1.0*g229;
24051  g244 = 1.0*g217;
24052  g245 = 1.0*g224;
24053  g246 = 1.0*g226;
24054  g247 = 1.0*g230;
24055  g248 = g81/g173;
24056  g249 = g73/g165;
24057  g250 = g86/g178;
24058  g251 = g78/g170;
24059  g252 = g76/g168;
24060  g253 = g79/g171;
24061  g254 = g82/g174;
24062  g255 = g83/g175;
24063  g256 = g80/g172;
24064  g257 = g77/g169;
24065  g258 = g72/g164;
24066  g259 = g75/g167;
24067  g260 = g71/g163;
24068  g261 = g70/g162;
24069  g262 = g74/g166;
24070  g263 = g85/g177;
24071  g264 = g68/g161;
24072  g265 = g84/g176;
24073  g266 = g214*g78;
24074  g267 = g217*g86;
24075  g268 = g215*g70;
24076  g269 = g219*g76;
24077  g270 = g221*g79;
24078  g271 = g220*g83;
24079  g272 = g218*g73;
24080  g273 = g228*g85;
24081  g274 = g222*g74;
24082  g275 = g224*g80;
24083  g276 = g216*g77;
24084  g277 = g225*g82;
24085  g278 = g223*g72;
24086  g279 = g229*g71;
24087  g280 = g227*g75;
24088  g281 = g230*g84;
24089  g282 = g226*g68;
24090  g283 = g127/g162;
24091  g284 = g133/g168;
24092  g285 = g129/g164;
24093  g286 = g136/g171;
24094  g287 = g137/g172;
24095  g288 = g138/g173;
24096  g289 = g135/g170;
24097  g290 = g125/g161;
24098  g291 = g142/g177;
24099  g292 = g143/g178;
24100  g293 = g134/g169;
24101  g294 = g140/g175;
24102  g295 = g132/g167;
24103  g296 = g130/g165;
24104  g297 = g131/g166;
24105  g298 = g141/g176;
24106  g299 = g128/g163;
24107  g300 = g139/g174;
24108  g301 = g127*g215;
24109  g302 = g134*g216;
24110  g303 = g130*g218;
24111  g304 = g133*g219;
24112  g305 = g140*g220;
24113  g306 = g136*g221;
24114  g307 = g131*g222;
24115  g308 = g129*g223;
24116  g309 = g137*g224;
24117  g310 = g139*g225;
24118  g311 = g125*g226;
24119  g312 = g132*g227;
24120  g313 = g135*g214;
24121  g314 = g142*g228;
24122  g315 = g128*g229;
24123  g316 = g141*g230;
24124  g317 = g143*g217;
24125  g318 = log(g106*g180*g22/g69);
24126  g319 = log(g106*g161*g22/g68);
24127  g320 = log(g180*g25*g66/g126);
24128  g321 = 1.0*g318;
24129  g322 = log(g161*g25*g66/g125);
24130  g323 = 1.0*g320;
24131  g324 = g248*g319;
24132  g325 = g249*g319;
24133  g326 = g250*g319;
24134  g327 = g261*g319;
24135  g328 = g254*g319;
24136  g329 = g255*g319;
24137  g330 = g252*g319;
24138  g331 = g253*g319;
24139  g332 = g263*g319;
24140  g333 = g262*g319;
24141  g334 = g257*g319;
24142  g335 = g258*g319;
24143  g336 = g259*g319;
24144  g337 = g260*g319;
24145  g338 = g256*g319;
24146  g339 = g251*g319;
24147  g340 = g264*g319;
24148  g341 = g265*g319;
24149  g342 = g293*g322;
24150  g343 = g296*g322;
24151  g344 = g284*g322;
24152  g345 = g294*g322;
24153  g346 = g285*g322;
24154  g347 = g297*g322;
24155  g348 = g287*g322;
24156  g349 = g283*g322;
24157  g350 = g286*g322;
24158  g351 = g289*g322;
24159  g352 = g300*g322;
24160  g353 = g295*g322;
24161  g354 = g291*g322;
24162  g355 = g292*g322;
24163  g356 = g290*g322;
24164  g357 = g299*g322;
24165  g358 = g298*g322;
24166  g359 = g288*g322;
24167  g360 = g107 + g108 + g109 + g110 + g111 + g112 + g113 + g114 + g115 + g116 + g117 + g118 + g119 + g120 + g121 + g122 + g123 + g124;
24168  LpF = xF[0]*(g26 + 1.0)*(g327 + g349 + g65)/(g49*(g26 - 1.0)) + xF[10]*(g27 + 1.0)*(g337 + g357 + g65)/(g49*(g27 - 1.0)) + xF[11]*(g28 + 1.0)*(g335 + g346 + g65)/(g49*(g28 - 1.0)) + xF[12]*(g29 + 1.0)*(g325 + g343 + g65)/(g49*(g29 - 1.0)) + xF[13]*(g30 + 1.0)*(g333 + g347 + g65)/(g49*(g30 - 1.0)) + xF[14]*(g31 + 1.0)*(g336 + g353 + g65)/(g49*(g31 - 1.0)) + xF[15]*(g32 + 1.0)*(g330 + g344 + g65)/(g49*(g32 - 1.0)) + xF[16]*(g33 + 1.0)*(g334 + g342 + g65)/(g49*(g33 - 1.0)) + xF[17]*(g34 + 1.0)*(g339 + g351 + g65)/(g49*(g34 - 1.0)) + xF[1]*(g35 + 1.0)*(g340 + g356 + g65)/(g49*(g35 - 1.0)) + xF[2]*(g36 + 1.0)*(g331 + g350 + g65)/(g49*(g36 - 1.0)) + xF[3]*(g37 + 1.0)*(g338 + g348 + g65)/(g49*(g37 - 1.0)) + xF[4]*(g38 + 1.0)*(g324 + g359 + g65)/(g49*(g38 - 1.0)) + xF[5]*(g39 + 1.0)*(g328 + g352 + g65)/(g49*(g39 - 1.0)) + xF[6]*(g40 + 1.0)*(g329 + g345 + g65)/(g49*(g40 - 1.0)) + xF[7]*(g41 + 1.0)*(g341 + g358 + g65)/(g49*(g41 - 1.0)) + xF[8]*(g42 + 1.0)*(g332 + g354 + g65)/(g49*(g42 - 1.0)) + xF[9]*(g43 + 1.0)*(g326 + g355 + g65)/(g49*(g43 - 1.0));
24169  PpF = g66;
24170  TpF = -g21/g3;
24171  SWUpF = -g126*g200*g323 - g197*g321*(g103 + 1) - g197*g323*(pow(alpha, g19*g45) - 1) - g198*g321*(g102 + 1) - g198*g323*(pow(alpha, g18*g45) - 1) - g199*g321*(g89 + 1) - g199*g323*(pow(alpha, g45*g5) - 1) - g200*g321*g69 - g201*g321*(g88 + 1) - g201*g323*(pow(alpha, g4*g45) - 1) - g202*g321*(g95 + 1) - g202*g323*(pow(alpha, g11*g45) - 1) - g203*g321*(g93 + 1) - g203*g323*(pow(alpha, g45*g9) - 1) - g204*g321*(g97 + 1) - g204*g323*(pow(alpha, g13*g45) - 1) - g205*g321*(g101 + 1) - g205*g323*(pow(alpha, g17*g45) - 1) - g206*g321*(g90 + 1) - g206*g323*(pow(alpha, g45*g6) - 1) - g207*g321*(g91 + 1) - g207*g323*(pow(alpha, g45*g7) - 1) - g208*g321*(g100 + 1) - g208*g323*(pow(alpha, g16*g45) - 1) - g209*g321*(g92 + 1) - g209*g323*(pow(alpha, g45*g8) - 1) - g210*g321*(g99 + 1) - g210*g323*(pow(alpha, g15*g45) - 1) - g211*g321*(g96 + 1) - g211*g323*(pow(alpha, g12*g45) - 1) - g212*g321*(g87 + 1) - g212*g323*(pow(alpha, g1*g45) - 1) - g360 - g23*g318*(g98 + 1)/g191 - g23*g320*(pow(alpha, g14*g45) - 1)/g191 - g24*g318*(g94 + 1)/g187 - g24*g320*(pow(alpha, g10*g45) - 1)/g187;
24172  SWUpP = -g67*(g125*g246*g322 + g127*g232*g322 + g128*g243*g322 + g129*g240*g322 + g130*g233*g322 + g131*g236*g322 + g132*g239*g322 + g133*g234*g322 + g134*g231*g322 + g135*g242*g322 + g136*g237*g322 + g137*g245*g322 + g139*g238*g322 + g140*g235*g322 + g141*g247*g322 + g142*g241*g322 + g143*g244*g322 + g23*g324 + g23*g359 + g231*g319*g77 + g232*g319*g70 + g233*g319*g73 + g234*g319*g76 + g235*g319*g83 + g236*g319*g74 + g237*g319*g79 + g238*g319*g82 + g239*g319*g75 + g240*g319*g72 + g241*g319*g85 + g242*g319*g78 + g243*g319*g71 + g244*g319*g86 + g245*g319*g80 + g246*g319*g68 + g247*g319*g84 + g360);
24173  xP[0] = g301*g67;
24174  xP[1] = g311*g67;
24175  xP[2] = g306*g67;
24176  xP[3] = g309*g67;
24177  xP[4] = g138*g213*g67;
24178  xP[5] = g310*g67;
24179  xP[6] = g305*g67;
24180  xP[7] = g316*g67;
24181  xP[8] = g314*g67;
24182  xP[9] = g317*g67;
24183  xP[10] = g315*g67;
24184  xP[11] = g308*g67;
24185  xP[12] = g303*g67;
24186  xP[13] = g307*g67;
24187  xP[14] = g312*g67;
24188  xP[15] = g304*g67;
24189  xP[16] = g302*g67;
24190  xP[17] = g313*g67;
24191  xT[0] = g105*g268;
24192  xT[1] = g105*g282;
24193  xT[2] = g105*g270;
24194  xT[3] = g105*g275;
24195  xT[4] = g105*g213*g81;
24196  xT[5] = g105*g277;
24197  xT[6] = g105*g271;
24198  xT[7] = g105*g281;
24199  xT[8] = g105*g273;
24200  xT[9] = g105*g267;
24201  xT[10] = g105*g279;
24202  xT[11] = g105*g278;
24203  xT[12] = g105*g272;
24204  xT[13] = g105*g274;
24205  xT[14] = g105*g280;
24206  xT[15] = g105*g269;
24207  xT[16] = g105*g276;
24208  xT[17] = g105*g266;
24209  break;
24210  case 19:
24211  n0 = MW[0] - Mstar;
24212  n1 = log(alpha);
24213  n2 = xPj - xTj;
24214  n3 = xF[0] - xPj;
24215  n4 = MW[10] - Mstar;
24216  n5 = MW[11] - Mstar;
24217  n6 = MW[12] - Mstar;
24218  n7 = MW[13] - Mstar;
24219  n8 = MW[14] - Mstar;
24220  n9 = MW[15] - Mstar;
24221  n10 = MW[16] - Mstar;
24222  n11 = MW[17] - Mstar;
24223  n12 = MW[18] - Mstar;
24224  n13 = MW[1] - Mstar;
24225  n14 = MW[2] - Mstar;
24226  n15 = MW[3] - Mstar;
24227  n16 = MW[4] - Mstar;
24228  n17 = MW[5] - Mstar;
24229  n18 = MW[6] - Mstar;
24230  n19 = MW[7] - Mstar;
24231  n20 = MW[8] - Mstar;
24232  n21 = MW[9] - Mstar;
24233  n22 = log(xTj);
24234  n23 = -2;
24235  n24 = -n0;
24236  n25 = xF[0]*xPj;
24237  n26 = -Mstar;
24238  n27 = -NP0*n23;
24239  n28 = -xTj;
24240  n29 = pow(n0, -n23);
24241  n30 = pow(n1, -n23);
24242  n31 = pow(n4, -n23);
24243  n32 = pow(n5, -n23);
24244  n33 = pow(n6, -n23);
24245  n34 = pow(n7, -n23);
24246  n35 = pow(n8, -n23);
24247  n36 = pow(n9, -n23);
24248  n37 = pow(n10, -n23);
24249  n38 = pow(n11, -n23);
24250  n39 = pow(n12, -n23);
24251  n40 = pow(n13, -n23);
24252  n41 = pow(n14, -n23);
24253  n42 = pow(n15, -n23);
24254  n43 = pow(n16, -n23);
24255  n44 = pow(n17, -n23);
24256  n45 = pow(n18, -n23);
24257  n46 = pow(n19, -n23);
24258  n47 = pow(n20, -n23);
24259  n48 = pow(n21, -n23);
24260  n49 = Mstar*n1;
24261  n50 = -n1*n23;
24262  n51 = pow(alpha, NP0*n0);
24263  n52 = n25 + n28*xF[0];
24264  n53 = n25 + n28*xPj;
24265  n54 = pow(alpha, NP0*n4);
24266  n55 = pow(alpha, NP0*n5);
24267  n56 = pow(alpha, NP0*n6);
24268  n57 = pow(alpha, NP0*n7);
24269  n58 = pow(alpha, NP0*n8);
24270  n59 = pow(alpha, NP0*n9);
24271  n60 = pow(alpha, NP0*n10);
24272  n61 = pow(alpha, NP0*n11);
24273  n62 = pow(alpha, NP0*n12);
24274  n63 = pow(alpha, NP0*n13);
24275  n64 = pow(alpha, NP0*n14);
24276  n65 = pow(alpha, NP0*n15);
24277  n66 = pow(alpha, NP0*n16);
24278  n67 = pow(alpha, NP0*n17);
24279  n68 = pow(alpha, NP0*n18);
24280  n69 = pow(alpha, NP0*n19);
24281  n70 = pow(alpha, NP0*n20);
24282  n71 = pow(alpha, NP0*n21);
24283  n72 = -MW[0]*n1;
24284  n73 = n2/n3;
24285  n74 = n1*n12;
24286  n75 = n1*n7;
24287  n76 = n1*n14;
24288  n77 = n1*n9;
24289  n78 = -n51 + 1;
24290  n79 = -n54 + 1;
24291  n80 = pow(alpha, NP0*n23*n24);
24292  n81 = pow(n52, -n23);
24293  n82 = pow(n53, -n23);
24294  n83 = -n55 + 1;
24295  n84 = -n56 + 1;
24296  n85 = -n57 + 1;
24297  n86 = -n58 + 1;
24298  n87 = -n59 + 1;
24299  n88 = -n60 + 1;
24300  n89 = -n61 + 1;
24301  n90 = -n62 + 1;
24302  n91 = -n63 + 1;
24303  n92 = -n64 + 1;
24304  n93 = -n65 + 1;
24305  n94 = -n66 + 1;
24306  n95 = -n67 + 1;
24307  n96 = -n68 + 1;
24308  n97 = -n69 + 1;
24309  n98 = -n70 + 1;
24310  n99 = -n71 + 1;
24311  n100 = -n51;
24312  n101 = -n55;
24313  n102 = -n57;
24314  n103 = -n58;
24315  n104 = -n60;
24316  n105 = -n62;
24317  n106 = -n64;
24318  n107 = -n66;
24319  n108 = -n68;
24320  n109 = -n73;
24321  n110 = n51*xF[0];
24322  n111 = 1/(n0*n1);
24323  n112 = n88*xF[16];
24324  n113 = n1*n73;
24325  n114 = n15*n65;
24326  n115 = n93*xF[3];
24327  n116 = n87*xF[15];
24328  n117 = n30*n44;
24329  n118 = n1*n66;
24330  n119 = n29*n30;
24331  n120 = n99*xF[9];
24332  n121 = n96*xF[6];
24333  n122 = n58*n8;
24334  n123 = n97*xF[7];
24335  n124 = n1*n51;
24336  n125 = n30*n46;
24337  n126 = n86*xF[14];
24338  n127 = n92*xF[2];
24339  n128 = n30*n34;
24340  n129 = n11*n61;
24341  n130 = n21*n71;
24342  n131 = n79*xF[10];
24343  n132 = n85*xF[13];
24344  n133 = n78*xF[0];
24345  n134 = n30*n36;
24346  n135 = n30*n41;
24347  n136 = n20*n70;
24348  n137 = n30*n40;
24349  n138 = n10*n60;
24350  n139 = n13*n63;
24351  n140 = n30*n39;
24352  n141 = n4*n54;
24353  n142 = n56*n6;
24354  n143 = n84*xF[12];
24355  n144 = n95*xF[5];
24356  n145 = n17*n67;
24357  n146 = n18*n68;
24358  n147 = n19*n69;
24359  n148 = n5*n55;
24360  n149 = n30*n35;
24361  n150 = n59*n9;
24362  n151 = log((-1.0 + xPj/xF[0])/n2);
24363  n152 = -n143;
24364  n153 = n1*n148;
24365  n154 = n1*n129;
24366  n155 = n1*n146;
24367  n156 = n53/n52;
24368  n157 = n1*n142*xF[12];
24369  n158 = n146*n50;
24370  n159 = n1*n141*xF[10];
24371  n160 = n30*n38*n61;
24372  n161 = n30*n32*n55;
24373  n162 = n30*n47*n70;
24374  n163 = n30*n37*n60;
24375  n164 = n30*n42*n65;
24376  n165 = n30*n33*n56;
24377  n166 = n30*n43*n66;
24378  n167 = n30*n31*n54;
24379  n168 = n30*n45*n68;
24380  n169 = n100*n156 + 1;
24381  n170 = pow(n169, -n23);
24382  n171 = n151 + n22 + n49 + n72;
24383  n172 = n124*n156/n169;
24384  n173 = n0*n156*n30*n51/n169;
24385  n174 = n111*(n171 - log(n169)) + 1;
24386  n175 = pow(alpha, n0*n174);
24387  n176 = pow(alpha, n174*n4);
24388  n177 = pow(alpha, n174*n5);
24389  n178 = pow(alpha, n174*n6);
24390  n179 = pow(alpha, n174*n7);
24391  n180 = pow(alpha, n174*n8);
24392  n181 = pow(alpha, n174*n9);
24393  n182 = pow(alpha, n10*n174);
24394  n183 = pow(alpha, n11*n174);
24395  n184 = pow(alpha, n12*n174);
24396  n185 = pow(alpha, n13*n174);
24397  n186 = pow(alpha, n14*n174);
24398  n187 = pow(alpha, n15*n174);
24399  n188 = pow(alpha, n16*n174);
24400  n189 = pow(alpha, n17*n174);
24401  n190 = pow(alpha, n174*n18);
24402  n191 = pow(alpha, n174*n19);
24403  n192 = pow(alpha, n174*n20);
24404  n193 = pow(alpha, n174*n21);
24405  n194 = n6/n178;
24406  n195 = n12/n184;
24407  n196 = n19/n191;
24408  n197 = n21/n193;
24409  n198 = n11/n183;
24410  n199 = n15/n187;
24411  n200 = n18/n190;
24412  n201 = n8/n180;
24413  n202 = n20/n192;
24414  n203 = n5/n177;
24415  n204 = n13/n185;
24416  n205 = n14/n186;
24417  n206 = n16/n188;
24418  n207 = n9/n181;
24419  n208 = n17/n189;
24420  n209 = n4/n176;
24421  n210 = n10/n182;
24422  n211 = n7/n179;
24423  n212 = pow(alpha, n174*n24) + n78 - 1;
24424  n213 = n79 - 1 + 1.0/n176;
24425  n214 = n83 - 1 + 1.0/n177;
24426  n215 = n84 - 1 + 1.0/n178;
24427  n216 = n85 - 1 + 1.0/n179;
24428  n217 = n86 - 1 + 1.0/n180;
24429  n218 = n87 - 1 + 1.0/n181;
24430  n219 = n88 - 1 + 1.0/n182;
24431  n220 = n89 - 1 + 1.0/n183;
24432  n221 = n90 - 1 + 1.0/n184;
24433  n222 = n91 - 1 + 1.0/n185;
24434  n223 = n92 - 1 + 1.0/n186;
24435  n224 = n93 - 1 + 1.0/n187;
24436  n225 = n94 - 1 + 1.0/n188;
24437  n226 = n95 - 1 + 1.0/n189;
24438  n227 = n96 - 1 + 1.0/n190;
24439  n228 = n97 - 1 + 1.0/n191;
24440  n229 = n98 - 1 + 1.0/n192;
24441  n230 = n99 - 1 + 1.0/n193;
24442  n231 = pow(n212, -n23);
24443  n232 = pow(n213, -n23);
24444  n233 = pow(n214, -n23);
24445  n234 = pow(n215, -n23);
24446  n235 = pow(n216, -n23);
24447  n236 = pow(n217, -n23);
24448  n237 = pow(n218, -n23);
24449  n238 = pow(n219, -n23);
24450  n239 = pow(n220, -n23);
24451  n240 = pow(n221, -n23);
24452  n241 = pow(n222, -n23);
24453  n242 = pow(n223, -n23);
24454  n243 = pow(n224, -n23);
24455  n244 = pow(n225, -n23);
24456  n245 = pow(n226, -n23);
24457  n246 = pow(n227, -n23);
24458  n247 = pow(n228, -n23);
24459  n248 = pow(n229, -n23);
24460  n249 = pow(n230, -n23);
24461  n250 = pow(n212, 3);
24462  n251 = pow(n213, 3);
24463  n252 = pow(n214, 3);
24464  n253 = pow(n215, 3);
24465  n254 = pow(n216, 3);
24466  n255 = pow(n217, 3);
24467  n256 = pow(n218, 3);
24468  n257 = pow(n219, 3);
24469  n258 = pow(n220, 3);
24470  n259 = pow(n221, 3);
24471  n260 = pow(n222, 3);
24472  n261 = pow(n223, 3);
24473  n262 = pow(n224, 3);
24474  n263 = pow(n225, 3);
24475  n264 = pow(n226, 3);
24476  n265 = pow(n227, 3);
24477  n266 = pow(n228, 3);
24478  n267 = pow(n229, 3);
24479  n268 = pow(n230, 3);
24480  n269 = xF[11]/n214;
24481  n270 = xF[17]/n220;
24482  n271 = xF[14]/n217;
24483  n272 = xF[4]/n225;
24484  n273 = xF[8]/n229;
24485  n274 = xF[3]/n224;
24486  n275 = xF[16]/n219;
24487  n276 = xF[9]/n230;
24488  n277 = xF[12]/n215;
24489  n278 = xF[10]/n213;
24490  n279 = xF[6]/n227;
24491  n280 = xF[3]/n243;
24492  n281 = xF[17]/n239;
24493  n282 = -1/n247;
24494  n283 = n0*n1/n212;
24495  n284 = n67*xF[5]/n226;
24496  n285 = n63*xF[1]/n222;
24497  n286 = n62*xF[18]/n221;
24498  n287 = n69*xF[7]/n228;
24499  n288 = n57*xF[13]/n216;
24500  n289 = n64*xF[2]/n223;
24501  n290 = n59*xF[15]/n218;
24502  n291 = n83/n252;
24503  n292 = n91/n260;
24504  n293 = n78/n231;
24505  n294 = n83/n233;
24506  n295 = n94/n263;
24507  n296 = n144/n245;
24508  n297 = n90*xF[18]/n240;
24509  n298 = n91*xF[1]/n241;
24510  n299 = n94*xF[4]/n244;
24511  n300 = n89*xF[17]/n258;
24512  n301 = n90*xF[18]/n259;
24513  n302 = n98*xF[8]/n248;
24514  n303 = n276*n30*n48*n71;
24515  n304 = n0*n110*n113/n212;
24516  n305 = n110*n113*n24/n212;
24517  n306 = n110*n119*n73/n212;
24518  n307 = n167*n278*n73;
24519  n308 = n161*n269*n73;
24520  n309 = n165*n277*n73;
24521  n310 = n128*n288*n73;
24522  n311 = n149*n271*n58*n73;
24523  n312 = n134*n290*n73;
24524  n313 = n163*n275*n73;
24525  n314 = n160*n270*n73;
24526  n315 = n140*n286*n73;
24527  n316 = n137*n285*n73;
24528  n317 = n135*n289*n73;
24529  n318 = n164*n274*n73;
24530  n319 = n166*n272*n73;
24531  n320 = n117*n284*n73;
24532  n321 = n168*n279*n73;
24533  n322 = n125*n287*n73;
24534  n323 = n162*n273*n73;
24535  n324 = n303*n73;
24536  n325 = 0.5*n306;
24537  n326 = n156/(n169*n175);
24538  n327 = n326 + 1;
24539  n328 = n0*n124 + n0*n172/n175;
24540  n329 = n1*n141 + n172*n209;
24541  n330 = n153 + n172*n203;
24542  n331 = n1*n142 + n172*n194;
24543  n332 = n156*n51*n75/(n169*n179) + n57*n75;
24544  n333 = n1*n122 + n172*n201;
24545  n334 = n156*n51*n77/(n169*n181) + n59*n77;
24546  n335 = n1*n138 + n172*n210;
24547  n336 = n154 + n172*n198;
24548  n337 = n156*n51*n74/(n169*n184) + n62*n74;
24549  n338 = n1*n139 + n172*n204;
24550  n339 = n156*n51*n76/(n169*n186) + n64*n76;
24551  n340 = n1*n114 + n172*n199;
24552  n341 = n118*n16 + n172*n206;
24553  n342 = n1*n145 + n172*n208;
24554  n343 = n155 + n172*n200;
24555  n344 = n1*n147 + n172*n196;
24556  n345 = n1*n136 + n172*n202;
24557  n346 = n1*n130 + n172*n197;
24558  n347 = pow(n328, -n23);
24559  n348 = pow(n329, -n23);
24560  n349 = pow(n330, -n23);
24561  n350 = pow(n331, -n23);
24562  n351 = pow(n332, -n23);
24563  n352 = pow(n333, -n23);
24564  n353 = pow(n334, -n23);
24565  n354 = pow(n335, -n23);
24566  n355 = pow(n336, -n23);
24567  n356 = pow(n337, -n23);
24568  n357 = pow(n338, -n23);
24569  n358 = pow(n339, -n23);
24570  n359 = pow(n340, -n23);
24571  n360 = pow(n341, -n23);
24572  n361 = pow(n342, -n23);
24573  n362 = pow(n343, -n23);
24574  n363 = pow(n344, -n23);
24575  n364 = pow(n345, -n23);
24576  n365 = pow(n346, -n23);
24577  n366 = n330*xF[11];
24578  n367 = n338*xF[1];
24579  n368 = n341*xF[4];
24580  n369 = n345*xF[8];
24581  n370 = n124*n23*n24 + n172*n23*n24/n175;
24582  n371 = n114*n50 + n156*n199*n50*n51/n169;
24583  n372 = n129*n50 + n156*n198*n50*n51/n169;
24584  n373 = n349*xF[11];
24585  n374 = n357*xF[1];
24586  n375 = n360*xF[4];
24587  n376 = n100*n119*n326 + n100*n119;
24588  n377 = n336*n89;
24589  n378 = n331/n234;
24590  n379 = n328/n231;
24591  n380 = n339/n242;
24592  n381 = n346/n249;
24593  n382 = n329/n232;
24594  n383 = n332/n235;
24595  n384 = n333/n236;
24596  n385 = n334/n237;
24597  n386 = n335/n238;
24598  n387 = n344/n247;
24599  n388 = n359/n262;
24600  n389 = n365/n268;
24601  n390 = n362/n265;
24602  n391 = n353/n256;
24603  n392 = n351/n254;
24604  n393 = n352/n255;
24605  n394 = n363/n266;
24606  n395 = n347/n250;
24607  n396 = n358/n261;
24608  n397 = n350/n253;
24609  n398 = n361/n264;
24610  n399 = n348/n251;
24611  n400 = n354/n257;
24612  n401 = n364*n98*xF[8]/n267;
24613  n402 = n109*n133*n379;
24614  n403 = n133*n376/n231;
24615  n404 = n110*n113*n23*n24*(pow(alpha, NP0*n0 + n174*n24)*n0*n1*n156/n169 + n0*n124)/n231;
24616  n405 = n141*n50*n73*xF[10]*(pow(alpha, NP0*n0 - n174*n4)*n1*n156*n4/n169 + n1*n141)/n232;
24617  n406 = n148*n50*n73*xF[11]*(pow(alpha, NP0*n0 - n174*n5)*n1*n156*n5/n169 + n153)/n233;
24618  n407 = n142*n50*n73*xF[12]*(pow(alpha, NP0*n0 - n174*n6)*n1*n156*n6/n169 + n1*n142)/n234;
24619  n408 = n50*n57*n7*n73*xF[13]*(pow(alpha, NP0*n0 - n174*n7)*n156*n75/n169 + n57*n75)/n235;
24620  n409 = n122*n50*n73*xF[14]*(pow(alpha, NP0*n0 - n174*n8)*n1*n156*n8/n169 + n1*n122)/n236;
24621  n410 = n150*n50*n73*xF[15]*(pow(alpha, NP0*n0 - n174*n9)*n156*n77/n169 + n59*n77)/n237;
24622  n411 = n138*n50*n73*xF[16]*(pow(alpha, NP0*n0 - n10*n174)*n1*n10*n156/n169 + n1*n138)/n238;
24623  n412 = n129*n281*n50*n73*(pow(alpha, NP0*n0 - n11*n174)*n1*n11*n156/n169 + n154);
24624  n413 = n12*n50*n62*n73*xF[18]*(pow(alpha, NP0*n0 - n12*n174)*n156*n74/n169 + n62*n74)/n240;
24625  n414 = n139*n50*n73*xF[1]*(pow(alpha, NP0*n0 - n13*n174)*n1*n13*n156/n169 + n1*n139)/n241;
24626  n415 = n14*n50*n64*n73*xF[2]*(pow(alpha, NP0*n0 - n14*n174)*n156*n76/n169 + n64*n76)/n242;
24627  n416 = n114*n280*n50*n73*(pow(alpha, NP0*n0 - n15*n174)*n1*n15*n156/n169 + n1*n114);
24628  n417 = n16*n50*n66*n73*xF[4]*(pow(alpha, NP0*n0 - n16*n174)*n1*n156*n16/n169 + n118*n16)/n244;
24629  n418 = n145*n50*n73*xF[5]*(pow(alpha, NP0*n0 - n17*n174)*n1*n156*n17/n169 + n1*n145)/n245;
24630  n419 = n158*n73*xF[6]*(pow(alpha, NP0*n0 - n174*n18)*n1*n156*n18/n169 + n155)/n246;
24631  n420 = n147*n50*n73*xF[7]*(pow(alpha, NP0*n0 - n174*n19)*n1*n156*n19/n169 + n1*n147)/n247;
24632  n421 = n136*n50*n73*xF[8]*(pow(alpha, NP0*n0 - n174*n20)*n1*n156*n20/n169 + n1*n136)/n248;
24633  n422 = n130*n50*n73*xF[9]*(pow(alpha, NP0*n0 - n174*n21)*n1*n156*n21/n169 + n1*n130)/n249;
24634  n423 = 1.0*n0*n110*n113*n379;
24635  n424 = n403*n73;
24636  n425 = 0.5*n424;
24637  n426 = n304 + n402;
24638  n427 = n328*n370/n250;
24639  n428 = pow(alpha, n0*n27)*n0*n209*n30*n82/(n170*n81) - pow(alpha, n0*n27)*n30*n31*n82/(n170*n176*n81) + n167 + n173*n209;
24640  n429 = pow(alpha, n0*n27)*n0*n194*n30*n82/(n170*n81) - pow(alpha, n0*n27)*n30*n33*n82/(n170*n178*n81) + n165 + n173*n194;
24641  n430 = pow(alpha, n0*n27)*n128*n82/(n170*n179*n81) + pow(alpha, n0*n27)*n211*n24*n30*n82/(n170*n81) + n102*n128 + n156*n211*n24*n30*n51/n169;
24642  n431 = pow(alpha, n0*n27)*n149*n82/(n170*n180*n81) + pow(alpha, n0*n27)*n201*n24*n30*n82/(n170*n81) + n103*n149 + n156*n201*n24*n30*n51/n169;
24643  n432 = pow(alpha, n0*n27)*n0*n207*n30*n82/(n170*n81) - pow(alpha, n0*n27)*n134*n82/(n170*n181*n81) + n134*n59 + n173*n207;
24644  n433 = pow(alpha, n0*n27)*n210*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27)*n30*n37*n82/(n170*n182*n81) + n104*n30*n37 + n156*n210*n24*n30*n51/n169;
24645  n434 = pow(alpha, n0*n27)*n0*n198*n30*n82/(n170*n81) - pow(alpha, n0*n27)*n30*n38*n82/(n170*n183*n81) + n160 + n173*n198;
24646  n435 = pow(alpha, n0*n27)*n135*n82/(n170*n186*n81) + pow(alpha, n0*n27)*n205*n24*n30*n82/(n170*n81) + n106*n135 + n156*n205*n24*n30*n51/n169;
24647  n436 = pow(alpha, n0*n27)*n0*n199*n30*n82/(n170*n81) - pow(alpha, n0*n27)*n30*n42*n82/(n170*n187*n81) + n164 + n173*n199;
24648  n437 = pow(alpha, n0*n27)*n200*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27)*n30*n45*n82/(n170*n190*n81) + n108*n30*n45 + n156*n200*n24*n30*n51/n169;
24649  n438 = pow(alpha, n0*n27)*n0*n197*n30*n82/(n170*n81) - pow(alpha, n0*n27)*n30*n48*n82/(n170*n193*n81) + n173*n197 + n30*n48*n71;
24650  n439 = n132*n73*(pow(alpha, n0*n27 - n174*n7)*n128*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n7)*n24*n30*n7*n82/(n170*n81) + n102*n128 + n156*n211*n24*n30*n51/n169)/n235;
24651  n440 = n126*n73*(pow(alpha, n0*n27 - n174*n8)*n149*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n8)*n24*n30*n8*n82/(n170*n81) + n103*n149 + n156*n201*n24*n30*n51/n169)/n236;
24652  n441 = n112*n73*(pow(alpha, n0*n27 - n10*n174)*n10*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n10*n174)*n30*n37*n82/(n170*n81) + n104*n30*n37 + n156*n210*n24*n30*n51/n169)/n238;
24653  n442 = n297*n73*(pow(alpha, n0*n27 - n12*n174)*n12*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n12*n174)*n140*n82/(n170*n81) + n105*n140 + n156*n195*n24*n30*n51/n169);
24654  n443 = n127*n73*(pow(alpha, n0*n27 - n14*n174)*n135*n82/(n170*n81) + pow(alpha, n0*n27 - n14*n174)*n14*n24*n30*n82/(n170*n81) + n106*n135 + n156*n205*n24*n30*n51/n169)/n242;
24655  n444 = n299*n73*(pow(alpha, n0*n27 - n16*n174)*n16*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n16*n174)*n30*n43*n82/(n170*n81) + n107*n30*n43 + n156*n206*n24*n30*n51/n169);
24656  n445 = n121*n73*(pow(alpha, n0*n27 - n174*n18)*n18*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n18)*n30*n45*n82/(n170*n81) + n108*n30*n45 + n156*n200*n24*n30*n51/n169)/n246;
24657  n446 = n109*n131*(pow(alpha, n0*n27 - n174*n4)*n0*n30*n4*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n4)*n30*n31*n82/(n170*n81) + n167 + n173*n209)/n232;
24658  n447 = n109*n294*xF[11]*(pow(alpha, n0*n27 - n174*n5)*n0*n30*n5*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n5)*n30*n32*n82/(n170*n81) + n161 + n173*n203);
24659  n448 = n109*n143*(pow(alpha, n0*n27 - n174*n6)*n0*n30*n6*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n6)*n30*n33*n82/(n170*n81) + n165 + n173*n194)/n234;
24660  n449 = n109*n116*(pow(alpha, n0*n27 - n174*n9)*n0*n30*n82*n9/(n170*n81) - pow(alpha, n0*n27 - n174*n9)*n134*n82/(n170*n81) + n134*n59 + n173*n207)/n237;
24661  n450 = n109*n281*n89*(pow(alpha, n0*n27 - n11*n174)*n0*n11*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n11*n174)*n30*n38*n82/(n170*n81) + n160 + n173*n198);
24662  n451 = n109*n298*(pow(alpha, n0*n27 - n13*n174)*n0*n13*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n13*n174)*n137*n82/(n170*n81) + n137*n63 + n173*n204);
24663  n452 = n109*n115*(pow(alpha, n0*n27 - n15*n174)*n0*n15*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n15*n174)*n30*n42*n82/(n170*n81) + n164 + n173*n199)/n243;
24664  n453 = n109*n296*(pow(alpha, n0*n27 - n17*n174)*n0*n17*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n17*n174)*n117*n82/(n170*n81) + n117*n67 + n173*n208);
24665  n454 = n109*n123*(pow(alpha, n0*n27 - n174*n19)*n0*n19*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n19)*n125*n82/(n170*n81) + n125*n69 + n173*n196)/n247;
24666  n455 = n109*n302*(pow(alpha, n0*n27 - n174*n20)*n0*n20*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n20)*n30*n47*n82/(n170*n81) + n162 + n173*n202);
24667  n456 = n109*n120*(pow(alpha, n0*n27 - n174*n21)*n0*n21*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n21)*n30*n48*n82/(n170*n81) + n173*n197 + n30*n48*n71)/n249;
24668  n457 = n325 + n423 + n425;
24669  n458 = n109*n112*n386 + n109*n115*n340/n243 + n109*n116*n385 + n109*n120*n381 + n109*n121*n343/n246 + n109*n123*n387 + n109*n126*n384 + n109*n127*n380 + n109*n131*n382 + n109*n132*n383 + n109*n143*n378 + n109*n281*n377 + n109*n294*n366 + n109*n296*n342 + n109*n297*n337 + n109*n298*n338 + n109*n299*n341 + n109*n302*n345 + n113*n114*n274 + n113*n122*n271 + n113*n129*n270 + n113*n130*n276 + n113*n136*n273 + n113*n138*n275 + n113*n139*xF[1]/n222 + n113*n141*n278 + n113*n142*n277 + n113*n145*xF[5]/n226 + n113*n146*n279 + n113*n147*xF[7]/n228 + n113*n148*n269 + n113*n16*n272*n66 + n286*n73*n74 + n288*n73*n75 + n289*n73*n76 + n290*n73*n77 + n426;
24670  n459 = n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n317 + n318 + n319 + n320 + n321 + n322 + n323 + n324 + n404 + n405 + n406 + n407 + n408 + n409 + n410 + n411 + n412 + n413 + n414 + n415 + n416 + n417 + n418 + n419 + n420 + n421 + n422 + n424 + n439 + n440 + n441 + n442 + n443 + n444 + n445 + n446 + n447 + n448 + n449 + n450 + n451 + n452 + n453 + n454 + n455 + n456;
24671  n460 = n109*n112*n335*(n138*n50 + n156*n210*n50*n51/n169)/n257 + n109*n115*n340*n371/n262 + n109*n116*n334*(n150*n50 + n156*n207*n50*n51/n169)/n256 + n109*n120*n346*(n130*n50 + n156*n197*n50*n51/n169)/n268 + n109*n121*n343*(n156*n200*n50*n51/n169 + n158)/n265 + n109*n123*n344*(n147*n50 + n156*n196*n50*n51/n169)/n266 + n109*n126*n333*(n122*n50 + n156*n201*n50*n51/n169)/n255 + n109*n127*n339*(n14*n50*n64 + n156*n205*n50*n51/n169)/n261 + n109*n131*n329*(n141*n50 + n156*n209*n50*n51/n169)/n251 + n109*n132*n332*(n156*n211*n50*n51/n169 + n50*n57*n7)/n254 + n109*n133*n427 + n109*n143*n331*(n142*n50 + n156*n194*n50*n51/n169)/n253 + n109*n144*n342*(n145*n50 + n156*n208*n50*n51/n169)/n264 + n109*n291*n366*(n148*n50 + n156*n203*n50*n51/n169) + n109*n292*n367*(n139*n50 + n156*n204*n50*n51/n169) + n109*n295*n368*(n156*n206*n50*n51/n169 + n16*n50*n66) + n109*n300*n336*n372 + n109*n301*n337*(n12*n50*n62 + n156*n195*n50*n51/n169) + n109*n369*n98*(n136*n50 + n156*n202*n50*n51/n169)/n267 + n459;
24672  NP_b = -n0*n110*n113*n293*n327 - n27*(1.0*n0*n110*n113*(pow(alpha, NP0*n0 - n0*n174)*n0*n1*n156/n169 + n0*n124)/n231 - 1.0*n133*n395*n73 + 0.5*n133*n73*(pow(alpha, NP0*n0 - n0*n174)*n119*(-n25 + xPj*xTj)/(n169*n52) + n100*n119)/n231 + n325 - 0.5*xTj*(n109*n115*(pow(alpha, NP0*n0 - n15*n174)*n0*n15*n156*n30/n169 + pow(alpha, n0*n27 - n15*n174)*n0*n15*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n15*n174)*n30*n42*n82/(n170*n81) + n164)/n243 + n109*n116*(pow(alpha, NP0*n0 - n174*n9)*n0*n156*n30*n9/n169 + pow(alpha, n0*n27 - n174*n9)*n0*n30*n82*n9/(n170*n81) - pow(alpha, n0*n27 - n174*n9)*n134*n82/(n170*n81) + n134*n59)/n237 + n109*n120*(pow(alpha, NP0*n0 - n174*n21)*n0*n156*n21*n30/n169 + pow(alpha, n0*n27 - n174*n21)*n0*n21*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n21)*n30*n48*n82/(n170*n81) + n30*n48*n71)/n249 + n109*n123*(pow(alpha, NP0*n0 - n174*n19)*n0*n156*n19*n30/n169 + pow(alpha, n0*n27 - n174*n19)*n0*n19*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n19)*n125*n82/(n170*n81) + n125*n69)/n247 + n109*n131*(pow(alpha, NP0*n0 - n174*n4)*n0*n156*n30*n4/n169 + pow(alpha, n0*n27 - n174*n4)*n0*n30*n4*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n4)*n30*n31*n82/(n170*n81) + n167)/n232 + n109*n143*(pow(alpha, NP0*n0 - n174*n6)*n0*n156*n30*n6/n169 + pow(alpha, n0*n27 - n174*n6)*n0*n30*n6*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n6)*n30*n33*n82/(n170*n81) + n165)/n234 + n109*n281*n89*(pow(alpha, NP0*n0 - n11*n174)*n0*n11*n156*n30/n169 + pow(alpha, n0*n27 - n11*n174)*n0*n11*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n11*n174)*n30*n38*n82/(n170*n81) + n160) + n109*n294*xF[11]*(pow(alpha, NP0*n0 - n174*n5)*n0*n156*n30*n5/n169 + pow(alpha, n0*n27 - n174*n5)*n0*n30*n5*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n5)*n30*n32*n82/(n170*n81) + n161) + n109*n296*(pow(alpha, NP0*n0 - n17*n174)*n0*n156*n17*n30/n169 + pow(alpha, n0*n27 - n17*n174)*n0*n17*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n17*n174)*n117*n82/(n170*n81) + n117*n67) + n109*n298*(pow(alpha, NP0*n0 - n13*n174)*n0*n13*n156*n30/n169 + pow(alpha, n0*n27 - n13*n174)*n0*n13*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n13*n174)*n137*n82/(n170*n81) + n137*n63) + n109*n302*(pow(alpha, NP0*n0 - n174*n20)*n0*n156*n20*n30/n169 + pow(alpha, n0*n27 - n174*n20)*n0*n20*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n20)*n30*n47*n82/(n170*n81) + n162) + n112*n23*n400*n73 + n112*n73*(pow(alpha, NP0*n0 - n10*n174)*n10*n156*n24*n30/n169 + pow(alpha, n0*n27 - n10*n174)*n10*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n10*n174)*n30*n37*n82/(n170*n81) + n104*n30*n37)/n238 + n115*n23*n388*n73 + n116*n23*n391*n73 + n120*n23*n389*n73 + n121*n23*n390*n73 + n121*n73*(pow(alpha, NP0*n0 - n174*n18)*n156*n18*n24*n30/n169 + pow(alpha, n0*n27 - n174*n18)*n18*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n18)*n30*n45*n82/(n170*n81) + n108*n30*n45)/n246 + n123*n23*n394*n73 + n126*n23*n393*n73 + n126*n73*(pow(alpha, NP0*n0 - n174*n8)*n156*n24*n30*n8/n169 + pow(alpha, n0*n27 - n174*n8)*n149*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n8)*n24*n30*n8*n82/(n170*n81) + n103*n149)/n236 + n127*n23*n396*n73 + n127*n73*(pow(alpha, NP0*n0 - n14*n174)*n14*n156*n24*n30/n169 + pow(alpha, n0*n27 - n14*n174)*n135*n82/(n170*n81) + pow(alpha, n0*n27 - n14*n174)*n14*n24*n30*n82/(n170*n81) + n106*n135)/n242 + n131*n23*n399*n73 + n132*n23*n392*n73 + n132*n73*(pow(alpha, NP0*n0 - n174*n7)*n156*n24*n30*n7/n169 + pow(alpha, n0*n27 - n174*n7)*n128*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n7)*n24*n30*n7*n82/(n170*n81) + n102*n128)/n235 + n133*n23*n395*n73 + n133*n73*(pow(alpha, NP0*n0 - n0*n174)*n119*(-n25 + xPj*xTj)/(n169*n52) + n100*n119)/n231 + n143*n23*n397*n73 + n144*n23*n398*n73 + n23*n291*n373*n73 + n23*n292*n374*n73 + n23*n295*n375*n73 + n23*n300*n355*n73 + n23*n301*n356*n73 + n23*n401*n73 + n297*n73*(pow(alpha, NP0*n0 - n12*n174)*n12*n156*n24*n30/n169 + pow(alpha, n0*n27 - n12*n174)*n12*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n12*n174)*n140*n82/(n170*n81) + n105*n140) + n299*n73*(pow(alpha, NP0*n0 - n16*n174)*n156*n16*n24*n30/n169 + pow(alpha, n0*n27 - n16*n174)*n16*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n16*n174)*n30*n43*n82/(n170*n81) + n107*n30*n43) + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n317 + n318 + n319 + n320 + n321 + n322 + n323 + n324 + n404 + n405 + n406 + n407 + n408 + n409 + n410 + n411 + n412 + n413 + n414 + n415 + n416 + n417 + n418 + n419 + n420 + n421 + n422)) - n305 - n73*xTj*(n1*n114*n274 + n1*n122*n271 + n1*n130*n276 + n1*n136*n273 + n1*n138*n275 + n1*n139*xF[1]/n222 + n1*n145*xF[5]/n226 + n1*n147*xF[7]/n228 + n110*n283 - n112*n386 - n115*n340/n243 - n116*n385 + n118*n16*n272 - n120*n381 - n121*n343/n246 + n123*n282*n344 - n126*n384 - n127*n380 - n131*n382 - n132*n383 - n133*n379 + n152*n378 + n153*n269 + n154*n270 + n155*n279 + n157/n215 + n159/n213 - n281*n377 + n286*n74 + n288*n75 + n289*n76 + n290*n77 - n294*n366 - n296*n342 - n297*n337 - n298*n338 - n299*n341 - n302*n345);
24673  NP_2a = -n73*(-pow(alpha, n0*n27)*n119*n133*n23*pow(n327, -n23)/n250 - 2.0*pow(alpha, n0*n27)*n119*n327*xF[0]/n231 + n100*n119*n133*(-1 + (-n25 + xPj*xTj)/(n169*n175*n52))/n231 - 1.0*n110*n119/n212 + 1.0*xTj*(n1*n110*n23*n24*(pow(alpha, NP0*n0 + n174*n24)*n0*n1*n156/n169 + n0*n124)/n231 + n110*n119/n212 + n112*n23*n400 + n112*(pow(alpha, n0*n27 - n10*n174)*n10*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n10*n174)*n30*n37*n82/(n170*n81) + n104*n30*n37 + n156*n210*n24*n30*n51/n169)/n238 + n114*n280*n50*(pow(alpha, NP0*n0 - n15*n174)*n1*n15*n156/n169 + n1*n114) + n115*n23*n388 - n115*(pow(alpha, n0*n27 - n15*n174)*n0*n15*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n15*n174)*n30*n42*n82/(n170*n81) + n164 + n173*n199)/n243 + n116*n23*n391 - n116*(pow(alpha, n0*n27 - n174*n9)*n0*n30*n82*n9/(n170*n81) - pow(alpha, n0*n27 - n174*n9)*n134*n82/(n170*n81) + n134*n59 + n173*n207)/n237 + n117*n284 + n12*n50*n62*xF[18]*(pow(alpha, NP0*n0 - n12*n174)*n156*n74/n169 + n62*n74)/n240 + n120*n23*n389 - n120*(pow(alpha, n0*n27 - n174*n21)*n0*n21*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n21)*n30*n48*n82/(n170*n81) + n173*n197 + n30*n48*n71)/n249 + n121*n23*n390 + n121*(pow(alpha, n0*n27 - n174*n18)*n18*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n18)*n30*n45*n82/(n170*n81) + n108*n30*n45 + n156*n200*n24*n30*n51/n169)/n246 + n122*n50*xF[14]*(pow(alpha, NP0*n0 - n174*n8)*n1*n156*n8/n169 + n1*n122)/n236 + n123*n23*n394 + n123*n282*(pow(alpha, n0*n27 - n174*n19)*n0*n19*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n19)*n125*n82/(n170*n81) + n125*n69 + n173*n196) + n125*n287 + n126*n23*n393 + n126*(pow(alpha, n0*n27 - n174*n8)*n149*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n8)*n24*n30*n8*n82/(n170*n81) + n103*n149 + n156*n201*n24*n30*n51/n169)/n236 + n127*n23*n396 + n127*(pow(alpha, n0*n27 - n14*n174)*n135*n82/(n170*n81) + pow(alpha, n0*n27 - n14*n174)*n14*n24*n30*n82/(n170*n81) + n106*n135 + n156*n205*n24*n30*n51/n169)/n242 + n128*n288 + n129*n281*n50*(pow(alpha, NP0*n0 - n11*n174)*n1*n11*n156/n169 + n154) + n130*n50*xF[9]*(pow(alpha, NP0*n0 - n174*n21)*n1*n156*n21/n169 + n1*n130)/n249 + n131*n23*n399 - n131*(pow(alpha, n0*n27 - n174*n4)*n0*n30*n4*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n4)*n30*n31*n82/(n170*n81) + n167 + n173*n209)/n232 + n132*n23*n392 + n132*(pow(alpha, n0*n27 - n174*n7)*n128*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n7)*n24*n30*n7*n82/(n170*n81) + n102*n128 + n156*n211*n24*n30*n51/n169)/n235 + n133*n23*n395 + n134*n290 + n135*n289 + n136*n50*xF[8]*(pow(alpha, NP0*n0 - n174*n20)*n1*n156*n20/n169 + n1*n136)/n248 + n137*n285 + n138*n50*xF[16]*(pow(alpha, NP0*n0 - n10*n174)*n1*n10*n156/n169 + n1*n138)/n238 + n139*n50*xF[1]*(pow(alpha, NP0*n0 - n13*n174)*n1*n13*n156/n169 + n1*n139)/n241 + n14*n50*n64*xF[2]*(pow(alpha, NP0*n0 - n14*n174)*n156*n76/n169 + n64*n76)/n242 + n140*n286 + n141*n50*xF[10]*(pow(alpha, NP0*n0 - n174*n4)*n1*n156*n4/n169 + n1*n141)/n232 + n142*n50*xF[12]*(pow(alpha, NP0*n0 - n174*n6)*n1*n156*n6/n169 + n1*n142)/n234 + n143*n23*n397 + n144*n23*n398 + n145*n50*xF[5]*(pow(alpha, NP0*n0 - n17*n174)*n1*n156*n17/n169 + n1*n145)/n245 + n147*n50*xF[7]*(pow(alpha, NP0*n0 - n174*n19)*n1*n156*n19/n169 + n1*n147)/n247 + n148*n50*xF[11]*(pow(alpha, NP0*n0 - n174*n5)*n1*n156*n5/n169 + n153)/n233 + n149*n271*n58 + n150*n50*xF[15]*(pow(alpha, NP0*n0 - n174*n9)*n156*n77/n169 + n59*n77)/n237 + n152*(pow(alpha, n0*n27 - n174*n6)*n0*n30*n6*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n6)*n30*n33*n82/(n170*n81) + n165 + n173*n194)/n234 + n158*xF[6]*(pow(alpha, NP0*n0 - n174*n18)*n1*n156*n18/n169 + n155)/n246 + n16*n50*n66*xF[4]*(pow(alpha, NP0*n0 - n16*n174)*n1*n156*n16/n169 + n118*n16)/n244 + n160*n270 + n161*n269 + n162*n273 + n163*n275 + n164*n274 + n165*n277 + n166*n272 + n167*n278 + n168*n279 + n23*n291*n373 + n23*n292*n374 + n23*n295*n375 + n23*n300*n355 + n23*n301*n356 + n23*n401 - n281*n89*(pow(alpha, n0*n27 - n11*n174)*n0*n11*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n11*n174)*n30*n38*n82/(n170*n81) + n160 + n173*n198) + n294*xF[11]*(pow(alpha, n0*n27 - n174*n5)*n24*n30*n5*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n5)*n30*n32*n82/(n170*n81) + n101*n30*n32 + n156*n203*n24*n30*n51/n169) - n296*(pow(alpha, n0*n27 - n17*n174)*n0*n17*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n17*n174)*n117*n82/(n170*n81) + n117*n67 + n173*n208) + n297*(pow(alpha, n0*n27 - n12*n174)*n12*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n12*n174)*n140*n82/(n170*n81) + n105*n140 + n156*n195*n24*n30*n51/n169) - n298*(pow(alpha, n0*n27 - n13*n174)*n0*n13*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n13*n174)*n137*n82/(n170*n81) + n137*n63 + n173*n204) + n299*(pow(alpha, n0*n27 - n16*n174)*n16*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n16*n174)*n30*n43*n82/(n170*n81) + n107*n30*n43 + n156*n206*n24*n30*n51/n169) - n302*(pow(alpha, n0*n27 - n174*n20)*n0*n20*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n20)*n30*n47*n82/(n170*n81) + n162 + n173*n202) + n303 + n403 + n50*n57*n7*xF[13]*(pow(alpha, NP0*n0 - n174*n7)*n156*n75/n169 + n57*n75)/n235));
24674  NP_sqrt_base = (NP0*(n28*(n109*n112*(pow(alpha, NP0*n0 - n10*n174)*n1*n10*n156/n169 + n1*n138)/n238 + n109*n115*(pow(alpha, NP0*n0 - n15*n174)*n1*n15*n156/n169 + n1*n114)/n243 + n109*n116*(pow(alpha, NP0*n0 - n174*n9)*n156*n77/n169 + n59*n77)/n237 + n109*n120*(pow(alpha, NP0*n0 - n174*n21)*n1*n156*n21/n169 + n1*n130)/n249 + n109*n121*(pow(alpha, NP0*n0 - n174*n18)*n1*n156*n18/n169 + n155)/n246 + n109*n123*(pow(alpha, NP0*n0 - n174*n19)*n1*n156*n19/n169 + n1*n147)/n247 + n109*n126*(pow(alpha, NP0*n0 - n174*n8)*n1*n156*n8/n169 + n1*n122)/n236 + n109*n127*(pow(alpha, NP0*n0 - n14*n174)*n156*n76/n169 + n64*n76)/n242 + n109*n131*(pow(alpha, NP0*n0 - n174*n4)*n1*n156*n4/n169 + n1*n141)/n232 + n109*n132*(pow(alpha, NP0*n0 - n174*n7)*n156*n75/n169 + n57*n75)/n235 + n109*n133*(pow(alpha, NP0*n0 - n0*n174)*n0*n1*n156/n169 + n0*n124)/n231 + n109*n143*(pow(alpha, NP0*n0 - n174*n6)*n1*n156*n6/n169 + n1*n142)/n234 + n109*n281*n89*(pow(alpha, NP0*n0 - n11*n174)*n1*n11*n156/n169 + n154) + n109*n294*xF[11]*(pow(alpha, NP0*n0 - n174*n5)*n1*n156*n5/n169 + n153) + n109*n296*(pow(alpha, NP0*n0 - n17*n174)*n1*n156*n17/n169 + n1*n145) + n109*n297*(pow(alpha, NP0*n0 - n12*n174)*n156*n74/n169 + n62*n74) + n109*n298*(pow(alpha, NP0*n0 - n13*n174)*n1*n13*n156/n169 + n1*n139) + n109*n299*(pow(alpha, NP0*n0 - n16*n174)*n1*n156*n16/n169 + n118*n16) + n109*n302*(pow(alpha, NP0*n0 - n174*n20)*n1*n156*n20/n169 + n1*n136) + n113*n114*n274 + n113*n122*n271 + n113*n129*n270 + n113*n130*n276 + n113*n136*n273 + n113*n138*n275 + n113*n139*xF[1]/n222 + n113*n141*n278 + n113*n142*n277 + n113*n145*xF[5]/n226 + n113*n146*n279 + n113*n147*xF[7]/n228 + n113*n148*n269 + n113*n16*n272*n66 + n286*n73*n74 + n288*n73*n75 + n289*n73*n76 + n290*n73*n77 + n304) + n426) + n133*n73/n212 + xTj*(n109*n112/n219 + n109*n115/n224 + n109*n116/n218 + n109*n120/n230 + n109*n121/n227 + n109*n123/n228 + n109*n126/n217 + n109*n127/n223 + n109*n131/n213 + n109*n132/n216 + n109*n133/n212 + n109*n143/n215 + n109*n144/n226 + n109*n269*n83 + n109*n270*n89 + n109*n272*n94 + n109*n273*n98 + n109*n91*xF[1]/n222 + n109*n90*xF[18]/n221) + pow(NP0, -n23)*(-1.0*n0*n110*n113*n379 + 0.5*n133*n427*n73 - 0.5*n306 - 0.5*n424 + 0.5*n460*xTj))*(4.0*n0*n110*n113*n379 - 4.0*n133*n395*n73 - n23*n28*(n109*n112*(pow(alpha, NP0*n0 - n10*n174)*n1*n10*n156/n169 + n1*n138)*(pow(alpha, NP0*n0 - n10*n174)*n10*n156*n50/n169 + n138*n50)/n257 + n109*n115*(pow(alpha, NP0*n0 - n15*n174)*n1*n15*n156/n169 + n1*n114)*(pow(alpha, NP0*n0 - n15*n174)*n15*n156*n50/n169 + n114*n50)/n262 + n109*n115*(pow(alpha, NP0*n0 - n15*n174)*n0*n15*n156*n30/n169 + pow(alpha, n0*n27 - n15*n174)*n0*n15*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n15*n174)*n30*n42*n82/(n170*n81) + n164)/n243 + n109*n116*(pow(alpha, NP0*n0 - n174*n9)*n156*n77/n169 + n59*n77)*(pow(alpha, NP0*n0 - n174*n9)*n156*n50*n9/n169 + n150*n50)/n256 + n109*n116*(pow(alpha, NP0*n0 - n174*n9)*n0*n156*n30*n9/n169 + pow(alpha, n0*n27 - n174*n9)*n0*n30*n82*n9/(n170*n81) - pow(alpha, n0*n27 - n174*n9)*n134*n82/(n170*n81) + n134*n59)/n237 + n109*n120*(pow(alpha, NP0*n0 - n174*n21)*n1*n156*n21/n169 + n1*n130)*(pow(alpha, NP0*n0 - n174*n21)*n156*n21*n50/n169 + n130*n50)/n268 + n109*n120*(pow(alpha, NP0*n0 - n174*n21)*n0*n156*n21*n30/n169 + pow(alpha, n0*n27 - n174*n21)*n0*n21*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n21)*n30*n48*n82/(n170*n81) + n30*n48*n71)/n249 + n109*n121*(pow(alpha, NP0*n0 - n174*n18)*n1*n156*n18/n169 + n155)*(pow(alpha, NP0*n0 - n174*n18)*n156*n18*n50/n169 + n158)/n265 + n109*n123*(pow(alpha, NP0*n0 - n174*n19)*n1*n156*n19/n169 + n1*n147)*(pow(alpha, NP0*n0 - n174*n19)*n156*n19*n50/n169 + n147*n50)/n266 + n109*n123*(pow(alpha, NP0*n0 - n174*n19)*n0*n156*n19*n30/n169 + pow(alpha, n0*n27 - n174*n19)*n0*n19*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n19)*n125*n82/(n170*n81) + n125*n69)/n247 + n109*n126*(pow(alpha, NP0*n0 - n174*n8)*n1*n156*n8/n169 + n1*n122)*(pow(alpha, NP0*n0 - n174*n8)*n156*n50*n8/n169 + n122*n50)/n255 + n109*n127*(pow(alpha, NP0*n0 - n14*n174)*n156*n76/n169 + n64*n76)*(pow(alpha, NP0*n0 - n14*n174)*n14*n156*n50/n169 + n14*n50*n64)/n261 + n109*n131*(pow(alpha, NP0*n0 - n174*n4)*n1*n156*n4/n169 + n1*n141)*(pow(alpha, NP0*n0 - n174*n4)*n156*n4*n50/n169 + n141*n50)/n251 + n109*n131*(pow(alpha, NP0*n0 - n174*n4)*n0*n156*n30*n4/n169 + pow(alpha, n0*n27 - n174*n4)*n0*n30*n4*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n4)*n30*n31*n82/(n170*n81) + n167)/n232 + n109*n132*(pow(alpha, NP0*n0 - n174*n7)*n156*n75/n169 + n57*n75)*(pow(alpha, NP0*n0 - n174*n7)*n156*n50*n7/n169 + n50*n57*n7)/n254 + n109*n133*(pow(alpha, NP0*n0 - n0*n174)*n0*n1*n156/n169 + n0*n124)*(pow(alpha, NP0*n0 - n0*n174)*n1*n156*n23*n24/n169 + n124*n23*n24)/n250 + n109*n143*(pow(alpha, NP0*n0 - n174*n6)*n1*n156*n6/n169 + n1*n142)*(pow(alpha, NP0*n0 - n174*n6)*n156*n50*n6/n169 + n142*n50)/n253 + n109*n143*(pow(alpha, NP0*n0 - n174*n6)*n0*n156*n30*n6/n169 + pow(alpha, n0*n27 - n174*n6)*n0*n30*n6*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n6)*n30*n33*n82/(n170*n81) + n165)/n234 + n109*n144*(pow(alpha, NP0*n0 - n17*n174)*n1*n156*n17/n169 + n1*n145)*(pow(alpha, NP0*n0 - n17*n174)*n156*n17*n50/n169 + n145*n50)/n264 + n109*n281*n89*(pow(alpha, NP0*n0 - n11*n174)*n0*n11*n156*n30/n169 + pow(alpha, n0*n27 - n11*n174)*n0*n11*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n11*n174)*n30*n38*n82/(n170*n81) + n160) + n109*n291*xF[11]*(pow(alpha, NP0*n0 - n174*n5)*n1*n156*n5/n169 + n153)*(pow(alpha, NP0*n0 - n174*n5)*n156*n5*n50/n169 + n148*n50) + n109*n292*xF[1]*(pow(alpha, NP0*n0 - n13*n174)*n1*n13*n156/n169 + n1*n139)*(pow(alpha, NP0*n0 - n13*n174)*n13*n156*n50/n169 + n139*n50) + n109*n294*xF[11]*(pow(alpha, NP0*n0 - n174*n5)*n0*n156*n30*n5/n169 + pow(alpha, n0*n27 - n174*n5)*n0*n30*n5*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n5)*n30*n32*n82/(n170*n81) + n161) + n109*n295*xF[4]*(pow(alpha, NP0*n0 - n16*n174)*n1*n156*n16/n169 + n118*n16)*(pow(alpha, NP0*n0 - n16*n174)*n156*n16*n50/n169 + n16*n50*n66) + n109*n296*(pow(alpha, NP0*n0 - n17*n174)*n0*n156*n17*n30/n169 + pow(alpha, n0*n27 - n17*n174)*n0*n17*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n17*n174)*n117*n82/(n170*n81) + n117*n67) + n109*n298*(pow(alpha, NP0*n0 - n13*n174)*n0*n13*n156*n30/n169 + pow(alpha, n0*n27 - n13*n174)*n0*n13*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n13*n174)*n137*n82/(n170*n81) + n137*n63) + n109*n300*(pow(alpha, NP0*n0 - n11*n174)*n1*n11*n156/n169 + n154)*(pow(alpha, NP0*n0 - n11*n174)*n11*n156*n50/n169 + n129*n50) + n109*n301*(pow(alpha, NP0*n0 - n12*n174)*n156*n74/n169 + n62*n74)*(pow(alpha, NP0*n0 - n12*n174)*n12*n156*n50/n169 + n12*n50*n62) + n109*n302*(pow(alpha, NP0*n0 - n174*n20)*n0*n156*n20*n30/n169 + pow(alpha, n0*n27 - n174*n20)*n0*n20*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n20)*n30*n47*n82/(n170*n81) + n162) + n109*n98*xF[8]*(pow(alpha, NP0*n0 - n174*n20)*n1*n156*n20/n169 + n1*n136)*(pow(alpha, NP0*n0 - n174*n20)*n156*n20*n50/n169 + n136*n50)/n267 + n112*n73*(pow(alpha, NP0*n0 - n10*n174)*n10*n156*n24*n30/n169 + pow(alpha, n0*n27 - n10*n174)*n10*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n10*n174)*n30*n37*n82/(n170*n81) + n104*n30*n37)/n238 + n121*n73*(pow(alpha, NP0*n0 - n174*n18)*n156*n18*n24*n30/n169 + pow(alpha, n0*n27 - n174*n18)*n18*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n18)*n30*n45*n82/(n170*n81) + n108*n30*n45)/n246 + n126*n73*(pow(alpha, NP0*n0 - n174*n8)*n156*n24*n30*n8/n169 + pow(alpha, n0*n27 - n174*n8)*n149*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n8)*n24*n30*n8*n82/(n170*n81) + n103*n149)/n236 + n127*n73*(pow(alpha, NP0*n0 - n14*n174)*n14*n156*n24*n30/n169 + pow(alpha, n0*n27 - n14*n174)*n135*n82/(n170*n81) + pow(alpha, n0*n27 - n14*n174)*n14*n24*n30*n82/(n170*n81) + n106*n135)/n242 + n132*n73*(pow(alpha, NP0*n0 - n174*n7)*n156*n24*n30*n7/n169 + pow(alpha, n0*n27 - n174*n7)*n128*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n7)*n24*n30*n7*n82/(n170*n81) + n102*n128)/n235 + n133*n73*(pow(alpha, NP0*n0 - n0*n174)*n119*(-n25 + xPj*xTj)/(n169*n52) + n100*n119)/n231 + n297*n73*(pow(alpha, NP0*n0 - n12*n174)*n12*n156*n24*n30/n169 + pow(alpha, n0*n27 - n12*n174)*n12*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n12*n174)*n140*n82/(n170*n81) + n105*n140) + n299*n73*(pow(alpha, NP0*n0 - n16*n174)*n156*n16*n24*n30/n169 + pow(alpha, n0*n27 - n16*n174)*n16*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n16*n174)*n30*n43*n82/(n170*n81) + n107*n30*n43) + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n317 + n318 + n319 + n320 + n321 + n322 + n323 + n324 + n404 + n405 + n406 + n407 + n408 + n409 + n410 + n411 + n412 + n413 + n414 + n415 + n416 + n417 + n418 + n419 + n420 + n421 + n422) + 2.0*n306 + 2.0*n424) + pow(-n133*n379*n73 - n27*(1.0*n0*n110*n113*(pow(alpha, NP0*n0 - n0*n174)*n0*n1*n156/n169 + n0*n124)/n231 - 0.5*n133*n73*(pow(alpha, NP0*n0 - n0*n174)*n0*n1*n156/n169 + n0*n124)*(pow(alpha, NP0*n0 - n0*n174)*n1*n156*n23*n24/n169 + n124*n23*n24)/n250 + 0.5*n133*n73*(pow(alpha, NP0*n0 - n0*n174)*n119*(-n25 + xPj*xTj)/(n169*n52) + n100*n119)/n231 + n325 - 0.5*xTj*(n109*n112*(pow(alpha, NP0*n0 - n10*n174)*n1*n10*n156/n169 + n1*n138)*(pow(alpha, NP0*n0 - n10*n174)*n10*n156*n50/n169 + n138*n50)/n257 + n109*n115*(pow(alpha, NP0*n0 - n15*n174)*n1*n15*n156/n169 + n1*n114)*(pow(alpha, NP0*n0 - n15*n174)*n15*n156*n50/n169 + n114*n50)/n262 + n109*n115*(pow(alpha, NP0*n0 - n15*n174)*n0*n15*n156*n30/n169 + pow(alpha, n0*n27 - n15*n174)*n0*n15*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n15*n174)*n30*n42*n82/(n170*n81) + n164)/n243 + n109*n116*(pow(alpha, NP0*n0 - n174*n9)*n156*n77/n169 + n59*n77)*(pow(alpha, NP0*n0 - n174*n9)*n156*n50*n9/n169 + n150*n50)/n256 + n109*n116*(pow(alpha, NP0*n0 - n174*n9)*n0*n156*n30*n9/n169 + pow(alpha, n0*n27 - n174*n9)*n0*n30*n82*n9/(n170*n81) - pow(alpha, n0*n27 - n174*n9)*n134*n82/(n170*n81) + n134*n59)/n237 + n109*n120*(pow(alpha, NP0*n0 - n174*n21)*n1*n156*n21/n169 + n1*n130)*(pow(alpha, NP0*n0 - n174*n21)*n156*n21*n50/n169 + n130*n50)/n268 + n109*n120*(pow(alpha, NP0*n0 - n174*n21)*n0*n156*n21*n30/n169 + pow(alpha, n0*n27 - n174*n21)*n0*n21*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n21)*n30*n48*n82/(n170*n81) + n30*n48*n71)/n249 + n109*n121*(pow(alpha, NP0*n0 - n174*n18)*n1*n156*n18/n169 + n155)*(pow(alpha, NP0*n0 - n174*n18)*n156*n18*n50/n169 + n158)/n265 + n109*n123*(pow(alpha, NP0*n0 - n174*n19)*n1*n156*n19/n169 + n1*n147)*(pow(alpha, NP0*n0 - n174*n19)*n156*n19*n50/n169 + n147*n50)/n266 + n109*n123*(pow(alpha, NP0*n0 - n174*n19)*n0*n156*n19*n30/n169 + pow(alpha, n0*n27 - n174*n19)*n0*n19*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n19)*n125*n82/(n170*n81) + n125*n69)/n247 + n109*n126*(pow(alpha, NP0*n0 - n174*n8)*n1*n156*n8/n169 + n1*n122)*(pow(alpha, NP0*n0 - n174*n8)*n156*n50*n8/n169 + n122*n50)/n255 + n109*n127*(pow(alpha, NP0*n0 - n14*n174)*n156*n76/n169 + n64*n76)*(pow(alpha, NP0*n0 - n14*n174)*n14*n156*n50/n169 + n14*n50*n64)/n261 + n109*n131*(pow(alpha, NP0*n0 - n174*n4)*n1*n156*n4/n169 + n1*n141)*(pow(alpha, NP0*n0 - n174*n4)*n156*n4*n50/n169 + n141*n50)/n251 + n109*n131*(pow(alpha, NP0*n0 - n174*n4)*n0*n156*n30*n4/n169 + pow(alpha, n0*n27 - n174*n4)*n0*n30*n4*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n4)*n30*n31*n82/(n170*n81) + n167)/n232 + n109*n132*(pow(alpha, NP0*n0 - n174*n7)*n156*n75/n169 + n57*n75)*(pow(alpha, NP0*n0 - n174*n7)*n156*n50*n7/n169 + n50*n57*n7)/n254 + n109*n133*(pow(alpha, NP0*n0 - n0*n174)*n0*n1*n156/n169 + n0*n124)*(pow(alpha, NP0*n0 - n0*n174)*n1*n156*n23*n24/n169 + n124*n23*n24)/n250 + n109*n143*(pow(alpha, NP0*n0 - n174*n6)*n1*n156*n6/n169 + n1*n142)*(pow(alpha, NP0*n0 - n174*n6)*n156*n50*n6/n169 + n142*n50)/n253 + n109*n143*(pow(alpha, NP0*n0 - n174*n6)*n0*n156*n30*n6/n169 + pow(alpha, n0*n27 - n174*n6)*n0*n30*n6*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n6)*n30*n33*n82/(n170*n81) + n165)/n234 + n109*n144*(pow(alpha, NP0*n0 - n17*n174)*n1*n156*n17/n169 + n1*n145)*(pow(alpha, NP0*n0 - n17*n174)*n156*n17*n50/n169 + n145*n50)/n264 + n109*n281*n89*(pow(alpha, NP0*n0 - n11*n174)*n0*n11*n156*n30/n169 + pow(alpha, n0*n27 - n11*n174)*n0*n11*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n11*n174)*n30*n38*n82/(n170*n81) + n160) + n109*n291*xF[11]*(pow(alpha, NP0*n0 - n174*n5)*n1*n156*n5/n169 + n153)*(pow(alpha, NP0*n0 - n174*n5)*n156*n5*n50/n169 + n148*n50) + n109*n292*xF[1]*(pow(alpha, NP0*n0 - n13*n174)*n1*n13*n156/n169 + n1*n139)*(pow(alpha, NP0*n0 - n13*n174)*n13*n156*n50/n169 + n139*n50) + n109*n294*xF[11]*(pow(alpha, NP0*n0 - n174*n5)*n0*n156*n30*n5/n169 + pow(alpha, n0*n27 - n174*n5)*n0*n30*n5*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n5)*n30*n32*n82/(n170*n81) + n161) + n109*n295*xF[4]*(pow(alpha, NP0*n0 - n16*n174)*n1*n156*n16/n169 + n118*n16)*(pow(alpha, NP0*n0 - n16*n174)*n156*n16*n50/n169 + n16*n50*n66) + n109*n296*(pow(alpha, NP0*n0 - n17*n174)*n0*n156*n17*n30/n169 + pow(alpha, n0*n27 - n17*n174)*n0*n17*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n17*n174)*n117*n82/(n170*n81) + n117*n67) + n109*n298*(pow(alpha, NP0*n0 - n13*n174)*n0*n13*n156*n30/n169 + pow(alpha, n0*n27 - n13*n174)*n0*n13*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n13*n174)*n137*n82/(n170*n81) + n137*n63) + n109*n300*(pow(alpha, NP0*n0 - n11*n174)*n1*n11*n156/n169 + n154)*(pow(alpha, NP0*n0 - n11*n174)*n11*n156*n50/n169 + n129*n50) + n109*n301*(pow(alpha, NP0*n0 - n12*n174)*n156*n74/n169 + n62*n74)*(pow(alpha, NP0*n0 - n12*n174)*n12*n156*n50/n169 + n12*n50*n62) + n109*n302*(pow(alpha, NP0*n0 - n174*n20)*n0*n156*n20*n30/n169 + pow(alpha, n0*n27 - n174*n20)*n0*n20*n30*n82/(n170*n81) - pow(alpha, n0*n27 - n174*n20)*n30*n47*n82/(n170*n81) + n162) + n109*n98*xF[8]*(pow(alpha, NP0*n0 - n174*n20)*n1*n156*n20/n169 + n1*n136)*(pow(alpha, NP0*n0 - n174*n20)*n156*n20*n50/n169 + n136*n50)/n267 + n112*n73*(pow(alpha, NP0*n0 - n10*n174)*n10*n156*n24*n30/n169 + pow(alpha, n0*n27 - n10*n174)*n10*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n10*n174)*n30*n37*n82/(n170*n81) + n104*n30*n37)/n238 + n121*n73*(pow(alpha, NP0*n0 - n174*n18)*n156*n18*n24*n30/n169 + pow(alpha, n0*n27 - n174*n18)*n18*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n18)*n30*n45*n82/(n170*n81) + n108*n30*n45)/n246 + n126*n73*(pow(alpha, NP0*n0 - n174*n8)*n156*n24*n30*n8/n169 + pow(alpha, n0*n27 - n174*n8)*n149*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n8)*n24*n30*n8*n82/(n170*n81) + n103*n149)/n236 + n127*n73*(pow(alpha, NP0*n0 - n14*n174)*n14*n156*n24*n30/n169 + pow(alpha, n0*n27 - n14*n174)*n135*n82/(n170*n81) + pow(alpha, n0*n27 - n14*n174)*n14*n24*n30*n82/(n170*n81) + n106*n135)/n242 + n132*n73*(pow(alpha, NP0*n0 - n174*n7)*n156*n24*n30*n7/n169 + pow(alpha, n0*n27 - n174*n7)*n128*n82/(n170*n81) + pow(alpha, n0*n27 - n174*n7)*n24*n30*n7*n82/(n170*n81) + n102*n128)/n235 + n133*n73*(pow(alpha, NP0*n0 - n0*n174)*n119*(-n25 + xPj*xTj)/(n169*n52) + n100*n119)/n231 + n297*n73*(pow(alpha, NP0*n0 - n12*n174)*n12*n156*n24*n30/n169 + pow(alpha, n0*n27 - n12*n174)*n12*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n12*n174)*n140*n82/(n170*n81) + n105*n140) + n299*n73*(pow(alpha, NP0*n0 - n16*n174)*n156*n16*n24*n30/n169 + pow(alpha, n0*n27 - n16*n174)*n16*n24*n30*n82/(n170*n81) + pow(alpha, n0*n27 - n16*n174)*n30*n43*n82/(n170*n81) + n107*n30*n43) + n306 + n307 + n308 + n309 + n310 + n311 + n312 + n313 + n314 + n315 + n316 + n317 + n318 + n319 + n320 + n321 + n322 + n323 + n324 + n404 + n405 + n406 + n407 + n408 + n409 + n410 + n411 + n412 + n413 + n414 + n415 + n416 + n417 + n418 + n419 + n420 + n421 + n422)) - n305 - n458*xTj, -n23);
24675  NP_sqrt_base = fabs(NP_sqrt_base);
24676  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
24677  NT1 = n111*(n171 - log(-pow(alpha, NP1*n0)*n156 + 1));
24678  g0 = MW[1] - Mstar;
24679  g1 = MW[0] - Mstar;
24680  g2 = NT1 + 1;
24681  g3 = xPj - xTj;
24682  g4 = MW[10] - Mstar;
24683  g5 = MW[11] - Mstar;
24684  g6 = MW[12] - Mstar;
24685  g7 = MW[13] - Mstar;
24686  g8 = MW[14] - Mstar;
24687  g9 = MW[15] - Mstar;
24688  g10 = MW[16] - Mstar;
24689  g11 = MW[17] - Mstar;
24690  g12 = MW[18] - Mstar;
24691  g13 = MW[2] - Mstar;
24692  g14 = MW[3] - Mstar;
24693  g15 = MW[4] - Mstar;
24694  g16 = MW[5] - Mstar;
24695  g17 = MW[6] - Mstar;
24696  g18 = MW[7] - Mstar;
24697  g19 = MW[8] - Mstar;
24698  g20 = MW[9] - Mstar;
24699  g21 = xF[0] - xTj;
24700  g22 = xF[0] - xPj;
24701  g23 = -xTj;
24702  g24 = xPj/xF[1];
24703  g25 = pow(alpha, -g1);
24704  g26 = pow(alpha, -g4);
24705  g27 = pow(alpha, -g5);
24706  g28 = pow(alpha, -g6);
24707  g29 = pow(alpha, -g7);
24708  g30 = pow(alpha, -g8);
24709  g31 = pow(alpha, -g9);
24710  g32 = pow(alpha, -g10);
24711  g33 = pow(alpha, -g11);
24712  g34 = pow(alpha, -g12);
24713  g35 = pow(alpha, -g0);
24714  g36 = pow(alpha, -g13);
24715  g37 = pow(alpha, -g14);
24716  g38 = pow(alpha, -g15);
24717  g39 = pow(alpha, -g16);
24718  g40 = pow(alpha, -g17);
24719  g41 = pow(alpha, -g18);
24720  g42 = pow(alpha, -g19);
24721  g43 = pow(alpha, -g20);
24722  g44 = log(xF[0]/xF[1]);
24723  g45 = -g2;
24724  g46 = pow(alpha, NP1*g0);
24725  g47 = pow(alpha, NP1*g1);
24726  g48 = pow(alpha, NP1*g4);
24727  g49 = log(g25);
24728  g50 = pow(alpha, NP1*g5);
24729  g51 = pow(alpha, NP1*g6);
24730  g52 = pow(alpha, NP1*g7);
24731  g53 = pow(alpha, NP1*g8);
24732  g54 = pow(alpha, NP1*g9);
24733  g55 = pow(alpha, NP1*g10);
24734  g56 = pow(alpha, NP1*g11);
24735  g57 = pow(alpha, NP1*g12);
24736  g58 = pow(alpha, NP1*g13);
24737  g59 = pow(alpha, NP1*g14);
24738  g60 = pow(alpha, NP1*g15);
24739  g61 = pow(alpha, NP1*g16);
24740  g62 = pow(alpha, NP1*g17);
24741  g63 = pow(alpha, NP1*g18);
24742  g64 = pow(alpha, NP1*g19);
24743  g65 = pow(alpha, NP1*g20);
24744  g66 = -g44;
24745  g67 = g21/g3;
24746  g68 = g3/g21;
24747  g69 = -g46 + 1;
24748  g70 = -g46 + 1;
24749  g71 = -g47 + 1;
24750  g72 = -g58 + 1;
24751  g73 = -g59 + 1;
24752  g74 = -g60 + 1;
24753  g75 = -g61 + 1;
24754  g76 = -g62 + 1;
24755  g77 = -g63 + 1;
24756  g78 = -g64 + 1;
24757  g79 = -g65 + 1;
24758  g80 = -g48 + 1;
24759  g81 = -g50 + 1;
24760  g82 = -g51 + 1;
24761  g83 = -g52 + 1;
24762  g84 = -g53 + 1;
24763  g85 = -g54 + 1;
24764  g86 = -g55 + 1;
24765  g87 = -g56 + 1;
24766  g88 = -g57 + 1;
24767  g89 = -g47;
24768  g90 = -g48;
24769  g91 = -g50;
24770  g92 = -g51;
24771  g93 = -g52;
24772  g94 = -g53;
24773  g95 = -g54;
24774  g96 = -g55;
24775  g97 = -g56;
24776  g98 = -g57;
24777  g99 = -g58;
24778  g100 = -g59;
24779  g101 = -g60;
24780  g102 = -g61;
24781  g103 = -g62;
24782  g104 = -g63;
24783  g105 = -g64;
24784  g106 = -g65;
24785  g107 = -1.0*g44;
24786  g108 = -g3/g22;
24787  g109 = g22/(g3*xF[1]);
24788  g110 = pow(alpha, g0*g45) - 1;
24789  g111 = pow(alpha, g0*g45) - 1;
24790  g112 = pow(alpha, g1*g45) - 1;
24791  g113 = pow(alpha, g13*g45) - 1;
24792  g114 = pow(alpha, g14*g45) - 1;
24793  g115 = pow(alpha, g15*g45) - 1;
24794  g116 = pow(alpha, g16*g45) - 1;
24795  g117 = pow(alpha, g17*g45) - 1;
24796  g118 = pow(alpha, g18*g45) - 1;
24797  g119 = pow(alpha, g19*g45) - 1;
24798  g120 = pow(alpha, g20*g45) - 1;
24799  g121 = pow(alpha, g4*g45) - 1;
24800  g122 = pow(alpha, g45*g5) - 1;
24801  g123 = pow(alpha, g45*g6) - 1;
24802  g124 = pow(alpha, g45*g7) - 1;
24803  g125 = pow(alpha, g45*g8) - 1;
24804  g126 = pow(alpha, g45*g9) - 1;
24805  g127 = pow(alpha, g10*g45) - 1;
24806  g128 = pow(alpha, g11*g45) - 1;
24807  g129 = pow(alpha, g12*g45) - 1;
24808  g130 = -pow(alpha, g1*g45);
24809  g131 = -pow(alpha, g4*g45);
24810  g132 = -pow(alpha, g45*g5);
24811  g133 = -pow(alpha, g45*g6);
24812  g134 = -pow(alpha, g45*g7);
24813  g135 = -pow(alpha, g45*g8);
24814  g136 = -pow(alpha, g45*g9);
24815  g137 = -pow(alpha, g10*g45);
24816  g138 = -pow(alpha, g11*g45);
24817  g139 = -pow(alpha, g12*g45);
24818  g140 = -pow(alpha, g13*g45);
24819  g141 = -pow(alpha, g14*g45);
24820  g142 = -pow(alpha, g15*g45);
24821  g143 = -pow(alpha, g16*g45);
24822  g144 = -pow(alpha, g17*g45);
24823  g145 = -pow(alpha, g18*g45);
24824  g146 = -pow(alpha, g19*g45);
24825  g147 = -pow(alpha, g20*g45);
24826  g148 = g111 + g70;
24827  g149 = -g130 - g47;
24828  g150 = -g131 - g48;
24829  g151 = -g132 - g50;
24830  g152 = -g133 - g51;
24831  g153 = -g134 - g52;
24832  g154 = -g135 - g53;
24833  g155 = -g136 - g54;
24834  g156 = -g137 - g55;
24835  g157 = -g138 - g56;
24836  g158 = -g139 - g57;
24837  g159 = -g140 - g58;
24838  g160 = -g141 - g59;
24839  g161 = -g142 - g60;
24840  g162 = -g143 - g61;
24841  g163 = -g144 - g62;
24842  g164 = -g145 - g63;
24843  g165 = -g146 - g64;
24844  g166 = -g147 - g65;
24845  g167 = pow(alpha, g1*g45) + g89;
24846  g168 = g111 + g70;
24847  g169 = pow(alpha, g4*g45) + g90;
24848  g170 = pow(alpha, g45*g5) + g91;
24849  g171 = pow(alpha, g45*g6) + g92;
24850  g172 = pow(alpha, g45*g7) + g93;
24851  g173 = pow(alpha, g45*g8) + g94;
24852  g174 = pow(alpha, g45*g9) + g95;
24853  g175 = pow(alpha, g10*g45) + g96;
24854  g176 = pow(alpha, g11*g45) + g97;
24855  g177 = pow(alpha, g12*g45) + g98;
24856  g178 = pow(alpha, g13*g45) + g99;
24857  g179 = pow(alpha, g14*g45) + g100;
24858  g180 = pow(alpha, g15*g45) + g101;
24859  g181 = pow(alpha, g16*g45) + g102;
24860  g182 = pow(alpha, g17*g45) + g103;
24861  g183 = pow(alpha, g18*g45) + g104;
24862  g184 = pow(alpha, g19*g45) + g105;
24863  g185 = pow(alpha, g20*g45) + g106;
24864  g186 = xF[9]/g185;
24865  g187 = xF[8]/g184;
24866  g188 = xF[1]/g168;
24867  g189 = xF[3]/g179;
24868  g190 = xF[10]/g169;
24869  g191 = xF[17]/g176;
24870  g192 = xF[15]/g174;
24871  g193 = xF[16]/g175;
24872  g194 = xF[7]/g183;
24873  g195 = xF[4]/g180;
24874  g196 = xF[12]/g171;
24875  g197 = xF[13]/g172;
24876  g198 = xF[11]/g170;
24877  g199 = xF[6]/g182;
24878  g200 = xF[14]/g173;
24879  g201 = xF[5]/g181;
24880  g202 = xF[2]/g178;
24881  g203 = xF[18]/g177;
24882  g204 = xF[0]/g167;
24883  g205 = xF[17]/g157;
24884  g206 = xF[0]/g149;
24885  g207 = xF[15]/g155;
24886  g208 = xF[4]/g161;
24887  g209 = xF[2]/g159;
24888  g210 = xF[11]/g151;
24889  g211 = xF[18]/g158;
24890  g212 = xF[1]/g148;
24891  g213 = xF[13]/g153;
24892  g214 = xF[16]/g156;
24893  g215 = xF[3]/g160;
24894  g216 = xF[6]/g163;
24895  g217 = xF[14]/g154;
24896  g218 = xF[8]/g165;
24897  g219 = xF[12]/g152;
24898  g220 = xF[10]/g150;
24899  g221 = xF[7]/g164;
24900  g222 = xF[9]/g166;
24901  g223 = xF[5]/g162;
24902  g224 = g82/g152;
24903  g225 = g79/g166;
24904  g226 = g87/g157;
24905  g227 = g85/g155;
24906  g228 = g74/g161;
24907  g229 = g72/g159;
24908  g230 = g71/g149;
24909  g231 = g75/g162;
24910  g232 = g88/g158;
24911  g233 = g76/g163;
24912  g234 = g83/g153;
24913  g235 = g73/g160;
24914  g236 = g86/g156;
24915  g237 = g81/g151;
24916  g238 = g84/g154;
24917  g239 = g80/g150;
24918  g240 = g78/g165;
24919  g241 = g69/g148;
24920  g242 = g77/g164;
24921  g243 = g112/g149;
24922  g244 = g126/g155;
24923  g245 = g122/g151;
24924  g246 = g113/g159;
24925  g247 = g114/g160;
24926  g248 = g115/g161;
24927  g249 = g128/g157;
24928  g250 = g110/g148;
24929  g251 = g119/g165;
24930  g252 = g120/g166;
24931  g253 = g127/g156;
24932  g254 = g117/g163;
24933  g255 = g125/g154;
24934  g256 = g123/g152;
24935  g257 = g124/g153;
24936  g258 = g129/g158;
24937  g259 = g118/g164;
24938  g260 = g121/g150;
24939  g261 = g116/g162;
24940  g262 = log(g109*g168*g23/g70);
24941  g263 = log(g109*g148*g23/g69);
24942  g264 = log(g168*g24*g67/g111);
24943  g265 = 1.0*g262;
24944  g266 = log(g148*g24*g67/g110);
24945  g267 = 1.0*g264;
24946  g268 = -g107*xF[0] - g107*xF[10] - g107*xF[11] - g107*xF[12] - g107*xF[13] - g107*xF[14] - g107*xF[15] - g107*xF[16] - g107*xF[17] - g107*xF[18] - g107*xF[1] - g107*xF[2] - g107*xF[3] - g107*xF[4] - g107*xF[5] - g107*xF[6] - g107*xF[7] - g107*xF[8] - g107*xF[9] - g111*g188*g267 - g186*g265*(g106 + 1) - g186*g267*(pow(alpha, g20*g45) - 1) - g187*g265*(g105 + 1) - g187*g267*(pow(alpha, g19*g45) - 1) - g188*g265*g70 - g189*g265*(g100 + 1) - g189*g267*(pow(alpha, g14*g45) - 1) - g190*g265*(g90 + 1) - g190*g267*(pow(alpha, g4*g45) - 1) - g191*g265*(g97 + 1) - g191*g267*(pow(alpha, g11*g45) - 1) - g192*g265*(g95 + 1) - g192*g267*(pow(alpha, g45*g9) - 1) - g193*g265*(g96 + 1) - g193*g267*(pow(alpha, g10*g45) - 1) - g194*g265*(g104 + 1) - g194*g267*(pow(alpha, g18*g45) - 1) - g195*g265*(g101 + 1) - g195*g267*(pow(alpha, g15*g45) - 1) - g196*g265*(g92 + 1) - g196*g267*(pow(alpha, g45*g6) - 1) - g197*g265*(g93 + 1) - g197*g267*(pow(alpha, g45*g7) - 1) - g198*g265*(g91 + 1) - g198*g267*(pow(alpha, g45*g5) - 1) - g199*g265*(g103 + 1) - g199*g267*(pow(alpha, g17*g45) - 1) - g200*g265*(g94 + 1) - g200*g267*(pow(alpha, g45*g8) - 1) - g201*g265*(g102 + 1) - g201*g267*(pow(alpha, g16*g45) - 1) - g202*g265*(g99 + 1) - g202*g267*(pow(alpha, g13*g45) - 1) - g203*g265*(g98 + 1) - g203*g267*(pow(alpha, g12*g45) - 1) - g204*g265*(g89 + 1) - g204*g267*(pow(alpha, g1*g45) - 1);
24947  LpF = xF[0]*(g25 + 1.0)*(g230*g263 + g243*g266 + g66)/(g49*(g25 - 1.0)) + xF[10]*(g26 + 1.0)*(g239*g263 + g260*g266 + g66)/(g49*(g26 - 1.0)) + xF[11]*(g27 + 1.0)*(g237*g263 + g245*g266 + g66)/(g49*(g27 - 1.0)) + xF[12]*(g28 + 1.0)*(g224*g263 + g256*g266 + g66)/(g49*(g28 - 1.0)) + xF[13]*(g29 + 1.0)*(g234*g263 + g257*g266 + g66)/(g49*(g29 - 1.0)) + xF[14]*(g30 + 1.0)*(g238*g263 + g255*g266 + g66)/(g49*(g30 - 1.0)) + xF[15]*(g31 + 1.0)*(g227*g263 + g244*g266 + g66)/(g49*(g31 - 1.0)) + xF[16]*(g32 + 1.0)*(g236*g263 + g253*g266 + g66)/(g49*(g32 - 1.0)) + xF[17]*(g33 + 1.0)*(g226*g263 + g249*g266 + g66)/(g49*(g33 - 1.0)) + xF[18]*(g34 + 1.0)*(g232*g263 + g258*g266 + g66)/(g49*(g34 - 1.0)) + xF[1]*(g35 + 1.0)*(g241*g263 + g250*g266 + g66)/(g49*(g35 - 1.0)) + xF[2]*(g36 + 1.0)*(g229*g263 + g246*g266 + g66)/(g49*(g36 - 1.0)) + xF[3]*(g37 + 1.0)*(g235*g263 + g247*g266 + g66)/(g49*(g37 - 1.0)) + xF[4]*(g38 + 1.0)*(g228*g263 + g248*g266 + g66)/(g49*(g38 - 1.0)) + xF[5]*(g39 + 1.0)*(g231*g263 + g261*g266 + g66)/(g49*(g39 - 1.0)) + xF[6]*(g40 + 1.0)*(g233*g263 + g254*g266 + g66)/(g49*(g40 - 1.0)) + xF[7]*(g41 + 1.0)*(g242*g263 + g259*g266 + g66)/(g49*(g41 - 1.0)) + xF[8]*(g42 + 1.0)*(g240*g263 + g251*g266 + g66)/(g49*(g42 - 1.0)) + xF[9]*(g43 + 1.0)*(g225*g263 + g252*g266 + g66)/(g49*(g43 - 1.0));
24948  PpF = g67;
24949  TpF = -g22/g3;
24950  SWUpF = g268;
24951  SWUpP = g268*g68;
24952  xP[0] = g112*g206*g68;
24953  xP[1] = g110*g212*g68;
24954  xP[2] = g113*g209*g68;
24955  xP[3] = g114*g215*g68;
24956  xP[4] = g115*g208*g68;
24957  xP[5] = g116*g223*g68;
24958  xP[6] = g117*g216*g68;
24959  xP[7] = g118*g221*g68;
24960  xP[8] = g119*g218*g68;
24961  xP[9] = g120*g222*g68;
24962  xP[10] = g121*g220*g68;
24963  xP[11] = g122*g210*g68;
24964  xP[12] = g123*g219*g68;
24965  xP[13] = g124*g213*g68;
24966  xP[14] = g125*g217*g68;
24967  xP[15] = g126*g207*g68;
24968  xP[16] = g127*g214*g68;
24969  xP[17] = g128*g205*g68;
24970  xP[18] = g129*g211*g68;
24971  xT[0] = g108*g206*g71;
24972  xT[1] = g108*g212*g69;
24973  xT[2] = g108*g209*g72;
24974  xT[3] = g108*g215*g73;
24975  xT[4] = g108*g208*g74;
24976  xT[5] = g108*g223*g75;
24977  xT[6] = g108*g216*g76;
24978  xT[7] = g108*g221*g77;
24979  xT[8] = g108*g218*g78;
24980  xT[9] = g108*g222*g79;
24981  xT[10] = g108*g220*g80;
24982  xT[11] = g108*g210*g81;
24983  xT[12] = g108*g219*g82;
24984  xT[13] = g108*g213*g83;
24985  xT[14] = g108*g217*g84;
24986  xT[15] = g108*g207*g85;
24987  xT[16] = g108*g214*g86;
24988  xT[17] = g108*g205*g87;
24989  xT[18] = g108*g211*g88;
24990  break;
24991  case 20:
24992  n0 = MW[0] - Mstar;
24993  n1 = log(alpha);
24994  n2 = xPj - xTj;
24995  n3 = xF[0] - xPj;
24996  n4 = MW[10] - Mstar;
24997  n5 = MW[11] - Mstar;
24998  n6 = MW[12] - Mstar;
24999  n7 = MW[13] - Mstar;
25000  n8 = MW[14] - Mstar;
25001  n9 = MW[15] - Mstar;
25002  n10 = MW[16] - Mstar;
25003  n11 = MW[17] - Mstar;
25004  n12 = MW[18] - Mstar;
25005  n13 = MW[19] - Mstar;
25006  n14 = MW[1] - Mstar;
25007  n15 = MW[2] - Mstar;
25008  n16 = MW[3] - Mstar;
25009  n17 = MW[4] - Mstar;
25010  n18 = MW[5] - Mstar;
25011  n19 = MW[6] - Mstar;
25012  n20 = MW[7] - Mstar;
25013  n21 = MW[8] - Mstar;
25014  n22 = MW[9] - Mstar;
25015  n23 = log(xTj);
25016  n24 = -2;
25017  n25 = -n0;
25018  n26 = xF[0]*xPj;
25019  n27 = -Mstar;
25020  n28 = -n24*xF[4];
25021  n29 = -n24*xF[12];
25022  n30 = -n24*xF[11];
25023  n31 = 4.0*xF[0];
25024  n32 = -xTj;
25025  n33 = -n24*xF[0];
25026  n34 = -xPj;
25027  n35 = -n24*xF[1];
25028  n36 = -n24*xF[17];
25029  n37 = -MW[0];
25030  n38 = -NP0*n24;
25031  n39 = pow(n0, -n24);
25032  n40 = pow(n1, -n24);
25033  n41 = pow(n4, -n24);
25034  n42 = pow(n5, -n24);
25035  n43 = pow(n6, -n24);
25036  n44 = pow(n7, -n24);
25037  n45 = pow(n8, -n24);
25038  n46 = pow(n9, -n24);
25039  n47 = pow(n10, -n24);
25040  n48 = pow(n11, -n24);
25041  n49 = pow(n12, -n24);
25042  n50 = pow(n13, -n24);
25043  n51 = pow(n14, -n24);
25044  n52 = pow(n15, -n24);
25045  n53 = pow(n16, -n24);
25046  n54 = pow(n17, -n24);
25047  n55 = pow(n18, -n24);
25048  n56 = pow(n19, -n24);
25049  n57 = pow(n20, -n24);
25050  n58 = pow(n21, -n24);
25051  n59 = pow(n22, -n24);
25052  n60 = Mstar*n1;
25053  n61 = -n1*n24;
25054  n62 = NP0*n0;
25055  n63 = pow(alpha, n62);
25056  n64 = n26 + n32*xF[0];
25057  n65 = n26 + n32*xPj;
25058  n66 = pow(alpha, NP0*n4);
25059  n67 = pow(alpha, NP0*n5);
25060  n68 = pow(alpha, NP0*n6);
25061  n69 = pow(alpha, NP0*n7);
25062  n70 = pow(alpha, NP0*n8);
25063  n71 = pow(alpha, NP0*n9);
25064  n72 = pow(alpha, NP0*n10);
25065  n73 = pow(alpha, NP0*n11);
25066  n74 = pow(alpha, NP0*n12);
25067  n75 = pow(alpha, NP0*n13);
25068  n76 = pow(alpha, NP0*n14);
25069  n77 = pow(alpha, NP0*n15);
25070  n78 = pow(alpha, NP0*n16);
25071  n79 = pow(alpha, NP0*n17);
25072  n80 = pow(alpha, NP0*n18);
25073  n81 = pow(alpha, NP0*n19);
25074  n82 = pow(alpha, NP0*n20);
25075  n83 = pow(alpha, NP0*n21);
25076  n84 = pow(alpha, NP0*n22);
25077  n85 = n1*n37;
25078  n86 = n2/n3;
25079  n87 = n1*n18;
25080  n88 = -n40;
25081  n89 = n1*n7;
25082  n90 = n1*n15;
25083  n91 = n1*n9;
25084  n92 = n1*n21;
25085  n93 = n0*n22;
25086  n94 = n0*n18;
25087  n95 = n0*n12;
25088  n96 = -n63 + 1;
25089  n97 = -n66 + 1;
25090  n98 = pow(alpha, NP0*n24*n25);
25091  n99 = pow(n64, -n24);
25092  n100 = pow(n65, -n24);
25093  n101 = -n67 + 1;
25094  n102 = -n68 + 1;
25095  n103 = -n69 + 1;
25096  n104 = -n70 + 1;
25097  n105 = -n71 + 1;
25098  n106 = -n72 + 1;
25099  n107 = -n73 + 1;
25100  n108 = -n74 + 1;
25101  n109 = -n75 + 1;
25102  n110 = -n76 + 1;
25103  n111 = -n77 + 1;
25104  n112 = -n78 + 1;
25105  n113 = -n79 + 1;
25106  n114 = -n80 + 1;
25107  n115 = -n81 + 1;
25108  n116 = -n82 + 1;
25109  n117 = -n83 + 1;
25110  n118 = -n84 + 1;
25111  n119 = n96;
25112  n120 = n97;
25113  n121 = n101;
25114  n122 = n102;
25115  n123 = n103;
25116  n124 = n104;
25117  n125 = n105;
25118  n126 = n106;
25119  n127 = n107;
25120  n128 = n108;
25121  n129 = n109;
25122  n130 = n110;
25123  n131 = n111;
25124  n132 = n112;
25125  n133 = n113;
25126  n134 = n114;
25127  n135 = n115;
25128  n136 = n116;
25129  n137 = n117;
25130  n138 = n118;
25131  n139 = -n102;
25132  n140 = -n63;
25133  n141 = -n80;
25134  n142 = -n86;
25135  n143 = n69*xF[13];
25136  n144 = n74*xF[18];
25137  n145 = n83*xF[8];
25138  n146 = 1/(n0*n1);
25139  n147 = n77*xF[2];
25140  n148 = n17*n40;
25141  n149 = n106*xF[16];
25142  n150 = n101*xF[11];
25143  n151 = n134*xF[5];
25144  n152 = n108*xF[18];
25145  n153 = n40*n44;
25146  n154 = n16*n78;
25147  n155 = n126*xF[16];
25148  n156 = n105*xF[15];
25149  n157 = n19*n81;
25150  n158 = n0*n63;
25151  n159 = n40*n55;
25152  n160 = n1*n79;
25153  n161 = n11*n73;
25154  n162 = n118*xF[9];
25155  n163 = n4*n66;
25156  n164 = n116*xF[7];
25157  n165 = n132*xF[3];
25158  n166 = n127*xF[17];
25159  n167 = n136*xF[7];
25160  n168 = n133*xF[4];
25161  n169 = n13*n75;
25162  n170 = n111*xF[2];
25163  n171 = n40*n49;
25164  n172 = n130*xF[1];
25165  n173 = n70*n8;
25166  n174 = n40*n58;
25167  n175 = n138*xF[9];
25168  n176 = n103*xF[13];
25169  n177 = n125*xF[15];
25170  n178 = n124*xF[14];
25171  n179 = n119*xF[0];
25172  n180 = n40*n46;
25173  n181 = n40*n52;
25174  n182 = n10*n72;
25175  n183 = n131*xF[2];
25176  n184 = n104*xF[14];
25177  n185 = n22*n84;
25178  n186 = n114*xF[5];
25179  n187 = n110*xF[1];
25180  n188 = n14*n76;
25181  n189 = n123*xF[13];
25182  n190 = n135*xF[6];
25183  n191 = n129*xF[19];
25184  n192 = n12*n74;
25185  n193 = n20*n82;
25186  n194 = n71*n9;
25187  n195 = n120*xF[10];
25188  n196 = n137*xF[8];
25189  n197 = n117*xF[8];
25190  n198 = n128*xF[18];
25191  n199 = log((-1.0 + xPj/xF[0])/n2);
25192  n200 = n173*xF[14];
25193  n201 = n188*xF[1];
25194  n202 = n42*n67;
25195  n203 = n182*xF[16];
25196  n204 = n185*xF[9];
25197  n205 = n39*n63;
25198  n206 = n193*xF[7];
25199  n207 = n50*n75;
25200  n208 = n54*n79;
25201  n209 = n1*n158;
25202  n210 = n1*n163;
25203  n211 = n1*n5*n67;
25204  n212 = n1*n6*n68;
25205  n213 = n69*n89;
25206  n214 = n1*n173;
25207  n215 = n71*n91;
25208  n216 = n1*n182;
25209  n217 = n1*n161;
25210  n218 = n1*n192;
25211  n219 = n1*n169;
25212  n220 = n1*n188;
25213  n221 = n77*n90;
25214  n222 = n1*n154;
25215  n223 = n160*n17;
25216  n224 = n80*n87;
25217  n225 = n1*n157;
25218  n226 = n1*n193;
25219  n227 = n83*n92;
25220  n228 = n1*n185;
25221  n229 = n65/n64;
25222  n230 = n40*n98;
25223  n231 = n40*n41*n66;
25224  n232 = n40*n43*n68;
25225  n233 = n180*n71;
25226  n234 = n40*n48*n73;
25227  n235 = n40*n51*n76;
25228  n236 = n40*n53*n78;
25229  n237 = n159*n80;
25230  n238 = n40*n56*n81;
25231  n239 = n40*n57*n82;
25232  n240 = n174*n83;
25233  n241 = n40*n59*n84;
25234  n242 = n40*n45*n70;
25235  n243 = n40*n47*n72;
25236  n244 = n205*n40*xF[0];
25237  n245 = n239*xF[7];
25238  n246 = n238*xF[6];
25239  n247 = n236*xF[3];
25240  n248 = n208*n40*xF[4];
25241  n249 = n140*n229 + 1;
25242  n250 = -n229*n63 + 1;
25243  n251 = pow(n249, -n24);
25244  n252 = pow(n250, -n24);
25245  n253 = n1*n229*n63;
25246  n254 = n199 + n23 + n60 + n85;
25247  n255 = n40/n249;
25248  n256 = n100/(n252*n99);
25249  n257 = n0*n256;
25250  n258 = n146*(n254 - log(n249)) + 1;
25251  n259 = n146*(n254 - log(n250)) + 1;
25252  n260 = pow(alpha, n0*n258);
25253  n261 = pow(alpha, n258*n4);
25254  n262 = pow(alpha, n258*n5);
25255  n263 = pow(alpha, n258*n6);
25256  n264 = pow(alpha, n258*n7);
25257  n265 = pow(alpha, n258*n8);
25258  n266 = pow(alpha, n258*n9);
25259  n267 = pow(alpha, n10*n258);
25260  n268 = pow(alpha, n11*n258);
25261  n269 = pow(alpha, n12*n258);
25262  n270 = pow(alpha, n13*n258);
25263  n271 = pow(alpha, n14*n258);
25264  n272 = pow(alpha, n15*n258);
25265  n273 = pow(alpha, n16*n258);
25266  n274 = pow(alpha, n17*n258);
25267  n275 = pow(alpha, n18*n258);
25268  n276 = pow(alpha, n19*n258);
25269  n277 = pow(alpha, n20*n258);
25270  n278 = pow(alpha, n21*n258);
25271  n279 = pow(alpha, n22*n258);
25272  n280 = pow(alpha, -n259*n4);
25273  n281 = pow(alpha, -n259*n6);
25274  n282 = pow(alpha, -n259*n9);
25275  n283 = pow(alpha, -n11*n259);
25276  n284 = pow(alpha, -n14*n259);
25277  n285 = pow(alpha, -n16*n259);
25278  n286 = pow(alpha, -n18*n259);
25279  n287 = pow(alpha, -n19*n259);
25280  n288 = pow(alpha, -n20*n259);
25281  n289 = pow(alpha, -n21*n259);
25282  n290 = pow(alpha, -n22*n259);
25283  n291 = -1/n269;
25284  n292 = n7/n264;
25285  n293 = n22*n290;
25286  n294 = n6/n263;
25287  n295 = -1/n264;
25288  n296 = n13/n270;
25289  n297 = n20/n277;
25290  n298 = -1/n263;
25291  n299 = n281*n6;
25292  n300 = -1/n276;
25293  n301 = -1/n261;
25294  n302 = n11/n268;
25295  n303 = n16/n273;
25296  n304 = n19/n276;
25297  n305 = n8/n265;
25298  n306 = -1/n266;
25299  n307 = n21/n278;
25300  n308 = n10/n267;
25301  n309 = n20*n288;
25302  n310 = -1/n262;
25303  n311 = n5/n262;
25304  n312 = -1/n275;
25305  n313 = n16*n285;
25306  n314 = n14/n271;
25307  n315 = -1/n279;
25308  n316 = n15/n272;
25309  n317 = -1/n273;
25310  n318 = n17/n274;
25311  n319 = n19*n287;
25312  n320 = -1/n270;
25313  n321 = n9/n266;
25314  n322 = n18/n275;
25315  n323 = -1/n278;
25316  n324 = n4/n261;
25317  n325 = -1/n271;
25318  n326 = n282*n9;
25319  n327 = -1/n268;
25320  n328 = n14*n284;
25321  n329 = -1/n277;
25322  n330 = n21*n289;
25323  n331 = n280*n4;
25324  n332 = n11*n283;
25325  n333 = n47/n267;
25326  n334 = n54/n274;
25327  n335 = n45/n265;
25328  n336 = pow(alpha, n25*n258) + n96 - 1;
25329  n337 = n97 - 1 + 1.0/n261;
25330  n338 = n101 - 1 + 1.0/n262;
25331  n339 = n102 - 1 + 1.0/n263;
25332  n340 = n103 - 1 + 1.0/n264;
25333  n341 = n104 - 1 + 1.0/n265;
25334  n342 = n105 - 1 + 1.0/n266;
25335  n343 = n106 - 1 + 1.0/n267;
25336  n344 = n107 - 1 + 1.0/n268;
25337  n345 = n108 - 1 + 1.0/n269;
25338  n346 = n109 - 1 + 1.0/n270;
25339  n347 = n110 - 1 + 1.0/n271;
25340  n348 = n111 - 1 + 1.0/n272;
25341  n349 = n112 - 1 + 1.0/n273;
25342  n350 = n113 - 1 + 1.0/n274;
25343  n351 = n114 - 1 + 1.0/n275;
25344  n352 = n115 - 1 + 1.0/n276;
25345  n353 = n116 - 1 + 1.0/n277;
25346  n354 = n117 - 1 + 1.0/n278;
25347  n355 = n118 - 1 + 1.0/n279;
25348  n356 = n96 - 1 + 1.0/n260;
25349  n357 = -n301 + n97 - 1;
25350  n358 = n101 - n310 - 1;
25351  n359 = -n139 - n298 - 1;
25352  n360 = n103 - n295 - 1;
25353  n361 = n341;
25354  n362 = n105 - n306 - 1;
25355  n363 = n343;
25356  n364 = n107 - n327 - 1;
25357  n365 = n108 - n291 - 1;
25358  n366 = n109 - n320 - 1;
25359  n367 = n110 - n325 - 1;
25360  n368 = n348;
25361  n369 = n112 - n317 - 1;
25362  n370 = n350;
25363  n371 = n114 - n312 - 1;
25364  n372 = n115 - n300 - 1;
25365  n373 = n116 - n329 - 1;
25366  n374 = n117 - n323 - 1;
25367  n375 = n118 - n315 - 1;
25368  n376 = pow(n336, -n24);
25369  n377 = pow(n337, -n24);
25370  n378 = pow(n338, -n24);
25371  n379 = pow(n339, -n24);
25372  n380 = pow(n340, -n24);
25373  n381 = pow(n341, -n24);
25374  n382 = pow(n342, -n24);
25375  n383 = pow(n343, -n24);
25376  n384 = pow(n344, -n24);
25377  n385 = pow(n345, -n24);
25378  n386 = pow(n346, -n24);
25379  n387 = pow(n347, -n24);
25380  n388 = pow(n348, -n24);
25381  n389 = pow(n349, -n24);
25382  n390 = pow(n350, -n24);
25383  n391 = pow(n351, -n24);
25384  n392 = pow(n352, -n24);
25385  n393 = pow(n353, -n24);
25386  n394 = pow(n354, -n24);
25387  n395 = pow(n355, -n24);
25388  n396 = pow(n336, 3);
25389  n397 = pow(n337, 3);
25390  n398 = pow(n338, 3);
25391  n399 = pow(n339, 3);
25392  n400 = pow(n340, 3);
25393  n401 = pow(n341, 3);
25394  n402 = pow(n342, 3);
25395  n403 = pow(n343, 3);
25396  n404 = pow(n344, 3);
25397  n405 = pow(n345, 3);
25398  n406 = pow(n346, 3);
25399  n407 = pow(n347, 3);
25400  n408 = pow(n348, 3);
25401  n409 = pow(n349, 3);
25402  n410 = pow(n350, 3);
25403  n411 = pow(n351, 3);
25404  n412 = pow(n352, 3);
25405  n413 = pow(n353, 3);
25406  n414 = pow(n354, 3);
25407  n415 = pow(n355, 3);
25408  n416 = pow(n356, -n24);
25409  n417 = pow(n357, -n24);
25410  n418 = pow(n362, -n24);
25411  n419 = pow(n364, -n24);
25412  n420 = pow(n366, -n24);
25413  n421 = pow(n368, -n24);
25414  n422 = pow(n369, -n24);
25415  n423 = pow(n370, -n24);
25416  n424 = pow(n371, -n24);
25417  n425 = pow(n372, -n24);
25418  n426 = pow(n373, -n24);
25419  n427 = pow(n356, 3);
25420  n428 = xF[12]/n339;
25421  n429 = xF[17]/n344;
25422  n430 = 0.5/n336;
25423  n431 = xF[10]/n337;
25424  n432 = xF[11]/n338;
25425  n433 = xF[19]/n346;
25426  n434 = xF[0]/n336;
25427  n435 = xF[16]/n343;
25428  n436 = xF[14]/n341;
25429  n437 = xF[3]/n389;
25430  n438 = n1/n347;
25431  n439 = n1/n341;
25432  n440 = xF[17]/n384;
25433  n441 = xF[10]/n377;
25434  n442 = n1/n343;
25435  n443 = n1/n355;
25436  n444 = n1/n353;
25437  n445 = -1/n393;
25438  n446 = xF[0]/n416;
25439  n447 = n1/n376;
25440  n448 = n1*n12/n345;
25441  n449 = n147/n348;
25442  n450 = n96/n376;
25443  n451 = n113/n410;
25444  n452 = n186/n391;
25445  n453 = n115*xF[6]/n412;
25446  n454 = n187/n387;
25447  n455 = n113*xF[4]/n390;
25448  n456 = n107*xF[17]/n404;
25449  n457 = n102*xF[12]/n399;
25450  n458 = n197/n394;
25451  n459 = n97*xF[10]/n397;
25452  n460 = 1/(n249*n274);
25453  n461 = 1/(n249*n260);
25454  n462 = n12/(n249*n269);
25455  n463 = n22/(n249*n279);
25456  n464 = n293/n250;
25457  n465 = n299/n250;
25458  n466 = n241*xF[9]/n355;
25459  n467 = n235*xF[1]/n347;
25460  n468 = n319/n250;
25461  n469 = n309/n250;
25462  n470 = n313/n250;
25463  n471 = n328/n250;
25464  n472 = n331/n250;
25465  n473 = n332/n250;
25466  n474 = n1*n25*n434*n63*n86;
25467  n475 = n244*n86/n336;
25468  n476 = n231*n431*n86;
25469  n477 = n202*n40*n432*n86;
25470  n478 = n232*n428*n86;
25471  n479 = n143*n153*n86/n340;
25472  n480 = n242*n436*n86;
25473  n481 = n233*n86*xF[15]/n342;
25474  n482 = n243*n435*n86;
25475  n483 = n234*n429*n86;
25476  n484 = n144*n171*n86/n345;
25477  n485 = n207*n40*n433*n86;
25478  n486 = n467*n86;
25479  n487 = n181*n449*n86;
25480  n488 = n247*n86/n349;
25481  n489 = n248*n86/n350;
25482  n490 = n237*n86*xF[5]/n351;
25483  n491 = n246*n86/n352;
25484  n492 = n245*n86/n353;
25485  n493 = n145*n174*n86/n354;
25486  n494 = n466*n86;
25487  n495 = n244*n430*n86;
25488  n496 = n229*n461 + 1;
25489  n497 = n209*n229*n461 + n209;
25490  n498 = n210 + n253*n324/n249;
25491  n499 = n211 + n253*n311/n249;
25492  n500 = n212 + n253*n294/n249;
25493  n501 = n213 + n229*n63*n89/(n249*n264);
25494  n502 = n214 + n253*n305/n249;
25495  n503 = n215 + n229*n63*n91/(n249*n266);
25496  n504 = n216 + n253*n308/n249;
25497  n505 = n217 + n253*n302/n249;
25498  n506 = n218 + n253*n462;
25499  n507 = n219 + n253*n296/n249;
25500  n508 = n220 + n253*n314/n249;
25501  n509 = n221 + n229*n63*n90/(n249*n272);
25502  n510 = n222 + n253*n303/n249;
25503  n511 = n223 + n253*n318/n249;
25504  n512 = n224 + n229*n63*n87/(n249*n275);
25505  n513 = n225 + n253*n304/n249;
25506  n514 = n226 + n253*n297/n249;
25507  n515 = n227 + n229*n63*n92/(n249*n278);
25508  n516 = n228 + n253*n463;
25509  n517 = pow(n497, -n24);
25510  n518 = pow(n498, -n24);
25511  n519 = pow(n499, -n24);
25512  n520 = pow(n500, -n24);
25513  n521 = pow(n501, -n24);
25514  n522 = pow(n502, -n24);
25515  n523 = pow(n503, -n24);
25516  n524 = pow(n504, -n24);
25517  n525 = pow(n505, -n24);
25518  n526 = pow(n506, -n24);
25519  n527 = pow(n507, -n24);
25520  n528 = pow(n508, -n24);
25521  n529 = pow(n509, -n24);
25522  n530 = pow(n510, -n24);
25523  n531 = pow(n511, -n24);
25524  n532 = pow(n512, -n24);
25525  n533 = pow(n513, -n24);
25526  n534 = pow(n514, -n24);
25527  n535 = pow(n515, -n24);
25528  n536 = pow(n516, -n24);
25529  n537 = pow(alpha, n25*n259)*n209*n229/n250 + n209;
25530  n538 = n497*xF[0];
25531  n539 = n511*xF[4];
25532  n540 = n1*n24*n25*n63 + n24*n25*n253*n461;
25533  n541 = pow(n537, -n24);
25534  n542 = -n205*n229*n255/n260 - n205*n40;
25535  n543 = n205*n229*n461*n88 + n205*n88;
25536  n544 = n112*n510;
25537  n545 = n498*n97;
25538  n546 = n107*n505;
25539  n547 = n504/n383;
25540  n548 = n499/n378;
25541  n549 = n509/n388;
25542  n550 = n506/n385;
25543  n551 = n516/n395;
25544  n552 = n512/n391;
25545  n553 = n501/n380;
25546  n554 = n502/n381;
25547  n555 = n503/n382;
25548  n556 = n508/n387;
25549  n557 = n514/n393;
25550  n558 = n526/n405;
25551  n559 = n500*xF[12]/n379;
25552  n560 = n513*xF[6]/n392;
25553  n561 = n536/n415;
25554  n562 = n507*xF[19]/n386;
25555  n563 = n523/n402;
25556  n564 = n521/n400;
25557  n565 = n534/n413;
25558  n566 = n529/n408;
25559  n567 = n532/n411;
25560  n568 = n519/n398;
25561  n569 = n524/n403;
25562  n570 = n528/n407;
25563  n571 = n522/n401;
25564  n572 = n540/n396;
25565  n573 = n517*n96/n396;
25566  n574 = n112*n530*xF[3]/n409;
25567  n575 = n197*n535/n414;
25568  n576 = n109*n527*xF[19]/n406;
25569  n577 = n450*n538*n86;
25570  n578 = n179*n542/n416;
25571  n579 = n24*n25*n447*n63*n86*xF[0]*(pow(alpha, n25*n258 + n62)*n0*n1*n229/n249 + n209);
25572  n580 = n163*n441*n61*n86*(pow(alpha, -n258*n4 + n62)*n1*n229*n4/n249 + n210);
25573  n581 = n211*n30*n86*(pow(alpha, -n258*n5 + n62)*n1*n229*n5/n249 + n211)/n378;
25574  n582 = n212*n29*n86*(pow(alpha, -n258*n6 + n62)*n1*n229*n6/n249 + n212)/n379;
25575  n583 = n143*n61*n7*n86*(pow(alpha, -n258*n7 + n62)*n229*n89/n249 + n213)/n380;
25576  n584 = n200*n61*n86*(pow(alpha, -n258*n8 + n62)*n1*n229*n8/n249 + n214)/n381;
25577  n585 = n194*n61*n86*xF[15]*(pow(alpha, -n258*n9 + n62)*n229*n91/n249 + n215)/n382;
25578  n586 = n203*n61*n86*(pow(alpha, -n10*n258 + n62)*n1*n10*n229/n249 + n216)/n383;
25579  n587 = n217*n36*n86*(pow(alpha, -n11*n258 + n62)*n1*n11*n229/n249 + n217)/n384;
25580  n588 = n12*n144*n61*n86*(pow(alpha, -n12*n258 + n62)*n1*n12*n229/n249 + n218)/n385;
25581  n589 = n169*n61*n86*xF[19]*(pow(alpha, -n13*n258 + n62)*n1*n13*n229/n249 + n219)/n386;
25582  n590 = n220*n35*n86*(pow(alpha, -n14*n258 + n62)*n1*n14*n229/n249 + n220)/n387;
25583  n591 = n147*n15*n61*n86*(pow(alpha, -n15*n258 + n62)*n229*n90/n249 + n221)/n388;
25584  n592 = n154*n437*n61*n86*(pow(alpha, -n16*n258 + n62)*n1*n16*n229/n249 + n222);
25585  n593 = n223*n28*n86*(pow(alpha, -n17*n258 + n62)*n1*n17*n229/n249 + n223)/n390;
25586  n594 = n18*n61*n80*n86*xF[5]*(pow(alpha, -n18*n258 + n62)*n229*n87/n249 + n224)/n391;
25587  n595 = n157*n61*n86*xF[6]*(pow(alpha, -n19*n258 + n62)*n1*n19*n229/n249 + n225)/n392;
25588  n596 = n206*n61*n86*(pow(alpha, -n20*n258 + n62)*n1*n20*n229/n249 + n226)/n393;
25589  n597 = n145*n21*n61*n86*(pow(alpha, -n21*n258 + n62)*n229*n92/n249 + n227)/n394;
25590  n598 = n204*n61*n86*(pow(alpha, -n22*n258 + n62)*n1*n22*n229/n249 + n228)/n395;
25591  n599 = 1.0*n209*n538*n86/n376;
25592  n600 = n450*n543*n86*xF[0];
25593  n601 = 0.5*n600;
25594  n602 = pow(alpha, n0*n38)*n0*n100*n324*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n41*n88/(n251*n261*n99) + n158*n229*n255*n324 + n231;
25595  n603 = pow(alpha, n0*n38)*n0*n100*n294*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n43*n88/(n251*n263*n99) + n158*n229*n255*n294 + n232;
25596  n604 = pow(alpha, n0*n38)*n100*n153/(n251*n264*n99) + pow(alpha, n0*n38)*n100*n25*n292*n40/(n251*n99) + n229*n25*n255*n292*n63 + n44*n69*n88;
25597  n605 = pow(alpha, n0*n38)*n0*n100*n321*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n46*n88/(n251*n266*n99) + n158*n229*n255*n321 + n233;
25598  n606 = pow(alpha, n0*n38)*n100*n25*n308*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n333*n40/(n251*n99) + n229*n25*n255*n308*n63 + n47*n72*n88;
25599  n607 = pow(alpha, n0*n38)*n0*n100*n302*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n48*n88/(n251*n268*n99) + n158*n229*n255*n302 + n234;
25600  n608 = pow(alpha, n0*n38)*n100*n12*n25*n40/(n251*n269*n99) + pow(alpha, n0*n38)*n100*n171/(n251*n269*n99) + n12*n229*n25*n255*n63/n269 + n49*n74*n88;
25601  n609 = pow(alpha, n0*n38)*n100*n25*n296*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n40*n50/(n251*n270*n99) + n207*n88 + n229*n25*n255*n296*n63;
25602  n610 = pow(alpha, n0*n38)*n100*n181/(n251*n272*n99) + pow(alpha, n0*n38)*n100*n25*n316*n40/(n251*n99) + n229*n25*n255*n316*n63 + n52*n77*n88;
25603  n611 = pow(alpha, n0*n38)*n0*n100*n303*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n53*n88/(n251*n273*n99) + n158*n229*n255*n303 + n236;
25604  n612 = pow(alpha, n0*n38)*n0*n100*n304*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n56*n88/(n251*n276*n99) + n158*n229*n255*n304 + n238;
25605  n613 = pow(alpha, n0*n38)*n100*n40*n93/(n251*n279*n99) + pow(alpha, n0*n38)*n100*n59*n88/(n251*n279*n99) + n229*n255*n63*n93/n279 + n241;
25606  n614 = pow(alpha, n0*n38)*n100*n25*n311*n40/(n251*n99) + pow(alpha, n0*n38)*n100*n40*n42/(n251*n262*n99) + n202*n88 + n229*n25*n255*n311*n63;
25607  n615 = n184*(pow(alpha, n0*n38 - n258*n8)*n100*n25*n40*n8/(n251*n99) + pow(alpha, n0*n38 - n258*n8)*n100*n40*n45/(n251*n99) + n229*n25*n255*n305*n63 + n45*n70*n88)/n381;
25608  n616 = n176*n86*(pow(alpha, n0*n38 - n258*n7)*n100*n153/(n251*n99) + pow(alpha, n0*n38 - n258*n7)*n100*n25*n40*n7/(n251*n99) + n229*n25*n255*n292*n63 + n44*n69*n88)/n380;
25609  n617 = n615*n86;
25610  n618 = n149*n86*(pow(alpha, n0*n38 - n10*n258)*n10*n100*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n10*n258)*n100*n40*n47/(n251*n99) + n229*n25*n255*n308*n63 + n47*n72*n88)/n383;
25611  n619 = n152*n86*(pow(alpha, n0*n38 - n12*n258)*n100*n12*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n12*n258)*n100*n171/(n251*n99) + n12*n229*n25*n255*n63/n269 + n49*n74*n88)/n385;
25612  n620 = n109*n86*xF[19]*(pow(alpha, n0*n38 - n13*n258)*n100*n13*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n13*n258)*n100*n40*n50/(n251*n99) + n207*n88 + n229*n25*n255*n296*n63)/n386;
25613  n621 = n170*n86*(pow(alpha, n0*n38 - n15*n258)*n100*n15*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n15*n258)*n100*n181/(n251*n99) + n229*n25*n255*n316*n63 + n52*n77*n88)/n388;
25614  n622 = n455*n86*(pow(alpha, n0*n38 - n17*n258)*n100*n148*n25/(n251*n99) + pow(alpha, n0*n38 - n17*n258)*n100*n40*n54/(n251*n99) + n148*n229*n25*n460*n63 + n208*n88);
25615  n623 = n142*n441*n97*(pow(alpha, n0*n38 - n258*n4)*n0*n100*n4*n40/(n251*n99) + pow(alpha, n0*n38 - n258*n4)*n100*n41*n88/(n251*n99) + n158*n229*n255*n324 + n231);
25616  n624 = n139*n86*xF[12]*(pow(alpha, n0*n38 - n258*n6)*n0*n100*n40*n6/(n251*n99) + pow(alpha, n0*n38 - n258*n6)*n100*n43*n88/(n251*n99) + n158*n229*n255*n294 + n232)/n379;
25617  n625 = n142*n156*(pow(alpha, n0*n38 - n258*n9)*n0*n100*n40*n9/(n251*n99) + pow(alpha, n0*n38 - n258*n9)*n100*n46*n88/(n251*n99) + n158*n229*n255*n321 + n233)/n382;
25618  n626 = n107*n142*n440*(pow(alpha, n0*n38 - n11*n258)*n0*n100*n11*n40/(n251*n99) + pow(alpha, n0*n38 - n11*n258)*n100*n48*n88/(n251*n99) + n158*n229*n255*n302 + n234);
25619  n627 = n142*n454*(pow(alpha, n0*n38 - n14*n258)*n0*n100*n14*n40/(n251*n99) + pow(alpha, n0*n38 - n14*n258)*n100*n51*n88/(n251*n99) + n158*n229*n255*n314 + n235);
25620  n628 = n112*n142*n437*(pow(alpha, n0*n38 - n16*n258)*n0*n100*n16*n40/(n251*n99) + pow(alpha, n0*n38 - n16*n258)*n100*n53*n88/(n251*n99) + n158*n229*n255*n303 + n236);
25621  n629 = n142*n452*(pow(alpha, n0*n38 - n18*n258)*n100*n40*n94/(n251*n99) + pow(alpha, n0*n38 - n18*n258)*n100*n55*n88/(n251*n99) + n229*n255*n63*n94/n275 + n237);
25622  n630 = n115*n142*xF[6]*(pow(alpha, n0*n38 - n19*n258)*n0*n100*n19*n40/(n251*n99) + pow(alpha, n0*n38 - n19*n258)*n100*n56*n88/(n251*n99) + n158*n229*n255*n304 + n238)/n392;
25623  n631 = n142*n164*(pow(alpha, n0*n38 - n20*n258)*n0*n100*n20*n40/(n251*n99) + pow(alpha, n0*n38 - n20*n258)*n100*n57*n88/(n251*n99) + n158*n229*n255*n297 + n239)/n393;
25624  n632 = n142*n458*(pow(alpha, n0*n38 - n21*n258)*n0*n100*n21*n40/(n251*n99) + pow(alpha, n0*n38 - n21*n258)*n100*n58*n88/(n251*n99) + n158*n229*n255*n307 + n240);
25625  n633 = n142*n162*(pow(alpha, n0*n38 - n22*n258)*n100*n40*n93/(n251*n99) + pow(alpha, n0*n38 - n22*n258)*n100*n59*n88/(n251*n99) + n229*n255*n63*n93/n279 + n241)/n395;
25626  n634 = n495 + n599 + n601;
25627  n635 = xTj*(n109*n142*n562 + n115*n142*n560 + n139*n559*n86 + n142*n149*n547 + n142*n150*n548 + n142*n152*n550 + n142*n156*n555 + n142*n162*n551 + n142*n164*n557 + n142*n170*n549 + n142*n176*n553 + n142*n184*n554 + n142*n437*n544 + n142*n440*n546 + n142*n441*n545 + n142*n450*n538 + n142*n452*n512 + n142*n454*n508 + n142*n455*n511 + n142*n458*n515 + n143*n86*n89/n340 + n144*n448*n86 + n145*n86*n92/n354 + n200*n439*n86 + n201*n438*n86 + n203*n442*n86 + n204*n443*n86 + n206*n444*n86 + n209*n434*n86 + n210*n431*n86 + n211*n432*n86 + n212*n428*n86 + n215*n86*xF[15]/n342 + n217*n429*n86 + n219*n433*n86 + n222*n86*xF[3]/n349 + n223*n86*xF[4]/n350 + n224*n86*xF[5]/n351 + n225*n86*xF[6]/n352 + n449*n86*n90);
25628  n636 = n474 + n577 + n635;
25629  n637 = n475 + n476 + n477 + n478 + n479 + n480 + n481 + n482 + n483 + n484 + n485 + n486 + n487 + n488 + n489 + n490 + n491 + n492 + n493 + n494 + n579 + n580 + n581 + n582 + n583 + n584 + n585 + n586 + n587 + n588 + n589 + n590 + n591 + n592 + n593 + n594 + n595 + n596 + n597 + n598 + n600 + n616 + n617 + n618 + n619 + n620 + n621 + n622 + n623 + n624 + n625 + n626 + n627 + n628 + n629 + n630 + n631 + n632 + n633;
25630  n638 = n109*n142*n507*xF[19]*(n169*n61 + n229*n296*n61*n63/n249)/n406 + n139*n500*n86*xF[12]*(n229*n294*n61*n63/n249 + n6*n61*n68)/n399 + n142*n149*n504*(n182*n61 + n229*n308*n61*n63/n249)/n403 + n142*n150*n499*(n229*n311*n61*n63/n249 + n5*n61*n67)/n398 + n142*n152*n506*(n192*n61 + n229*n462*n61*n63)/n405 + n142*n156*n503*(n194*n61 + n229*n321*n61*n63/n249)/n402 + n142*n162*n516*(n185*n61 + n229*n463*n61*n63)/n415 + n142*n164*n514*(n193*n61 + n229*n297*n61*n63/n249)/n413 + n142*n170*n509*(n15*n61*n77 + n229*n316*n61*n63/n249)/n408 + n142*n176*n501*(n229*n292*n61*n63/n249 + n61*n69*n7)/n400 + n142*n184*n502*(n173*n61 + n229*n305*n61*n63/n249)/n401 + n142*n186*n512*(n18*n61*n80 + n229*n322*n61*n63/n249)/n411 + n142*n187*n508*(n188*n61 + n229*n314*n61*n63/n249)/n407 + n142*n197*n515*(n21*n61*n83 + n229*n307*n61*n63/n249)/n414 + n142*n451*n539*(n17*n61*n79 + n229*n318*n61*n63/n249) + n142*n453*n513*(n157*n61 + n229*n304*n61*n63/n249) + n142*n456*n505*(n161*n61 + n229*n302*n61*n63/n249) + n142*n459*n498*(n163*n61 + n229*n324*n61*n63/n249) + n142*n538*n572*n96 + n142*n544*xF[3]*(n154*n61 + n229*n303*n61*n63/n249)/n409 + n150*n86*(pow(alpha, n0*n38 - n258*n5)*n100*n25*n40*n5/(n251*n99) + pow(alpha, n0*n38 - n258*n5)*n100*n40*n42/(n251*n99) + n202*n88 + n229*n25*n255*n311*n63)/n378 + n637;
25631  NP_b = -n209*n450*n496*n86*xF[0] - n38*(1.0*n209*n86*xF[0]*(pow(alpha, -n0*n258 + n62)*n0*n1*n229/n249 + n209)/n376 + 0.5*n450*n86*xF[0]*(pow(alpha, -n0*n258 + n62)*n229*n39*n88/n249 + n205*n88) + n495 - 1.0*n573*n86*xF[0] - 0.5*xTj*(n107*n142*n440*(pow(alpha, n0*n38 - n11*n258)*n0*n100*n11*n40/(n251*n99) + pow(alpha, n0*n38 - n11*n258)*n100*n48*n88/(n251*n99) + pow(alpha, -n11*n258 + n62)*n0*n11*n229*n255 + n234) + n109*n86*xF[19]*(pow(alpha, n0*n38 - n13*n258)*n100*n13*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n13*n258)*n100*n40*n50/(n251*n99) + pow(alpha, -n13*n258 + n62)*n13*n229*n25*n255 + n207*n88)/n386 + n112*n142*n437*(pow(alpha, n0*n38 - n16*n258)*n0*n100*n16*n40/(n251*n99) + pow(alpha, n0*n38 - n16*n258)*n100*n53*n88/(n251*n99) + pow(alpha, -n16*n258 + n62)*n0*n16*n229*n255 + n236) + n115*n142*xF[6]*(pow(alpha, n0*n38 - n19*n258)*n0*n100*n19*n40/(n251*n99) + pow(alpha, n0*n38 - n19*n258)*n100*n56*n88/(n251*n99) + pow(alpha, -n19*n258 + n62)*n0*n19*n229*n255 + n238)/n392 + n139*n86*xF[12]*(pow(alpha, n0*n38 - n258*n6)*n0*n100*n40*n6/(n251*n99) + pow(alpha, n0*n38 - n258*n6)*n100*n43*n88/(n251*n99) + pow(alpha, -n258*n6 + n62)*n0*n229*n255*n6 + n232)/n379 + n142*n150*(pow(alpha, n0*n38 - n258*n5)*n0*n100*n40*n5/(n251*n99) + pow(alpha, n0*n38 - n258*n5)*n100*n42*n88/(n251*n99) + pow(alpha, -n258*n5 + n62)*n0*n229*n255*n5 + n202*n40)/n378 + n142*n156*(pow(alpha, n0*n38 - n258*n9)*n0*n100*n40*n9/(n251*n99) + pow(alpha, n0*n38 - n258*n9)*n100*n46*n88/(n251*n99) + pow(alpha, -n258*n9 + n62)*n0*n229*n255*n9 + n233)/n382 + n142*n162*(pow(alpha, n0*n38 - n22*n258)*n100*n40*n93/(n251*n99) + pow(alpha, n0*n38 - n22*n258)*n100*n59*n88/(n251*n99) + pow(alpha, -n22*n258 + n62)*n229*n255*n93 + n241)/n395 + n142*n164*(pow(alpha, n0*n38 - n20*n258)*n0*n100*n20*n40/(n251*n99) + pow(alpha, n0*n38 - n20*n258)*n100*n57*n88/(n251*n99) + pow(alpha, -n20*n258 + n62)*n0*n20*n229*n255 + n239)/n393 + n142*n441*n97*(pow(alpha, n0*n38 - n258*n4)*n0*n100*n4*n40/(n251*n99) + pow(alpha, n0*n38 - n258*n4)*n100*n41*n88/(n251*n99) + pow(alpha, -n258*n4 + n62)*n0*n229*n255*n4 + n231) + n142*n452*(pow(alpha, n0*n38 - n18*n258)*n100*n40*n94/(n251*n99) + pow(alpha, n0*n38 - n18*n258)*n100*n55*n88/(n251*n99) + pow(alpha, -n18*n258 + n62)*n229*n255*n94 + n237) + n142*n454*(pow(alpha, n0*n38 - n14*n258)*n0*n100*n14*n40/(n251*n99) + pow(alpha, n0*n38 - n14*n258)*n100*n51*n88/(n251*n99) + pow(alpha, -n14*n258 + n62)*n0*n14*n229*n255 + n235) + n142*n458*(pow(alpha, n0*n38 - n21*n258)*n0*n100*n21*n40/(n251*n99) + pow(alpha, n0*n38 - n21*n258)*n100*n58*n88/(n251*n99) + pow(alpha, -n21*n258 + n62)*n0*n21*n229*n255 + n240) + n149*n24*n569*n86 + n149*n86*(pow(alpha, n0*n38 - n10*n258)*n10*n100*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n10*n258)*n100*n40*n47/(n251*n99) + pow(alpha, -n10*n258 + n62)*n10*n229*n25*n255 + n47*n72*n88)/n383 + n150*n24*n568*n86 + n152*n24*n558*n86 + n152*n86*(pow(alpha, n0*n38 - n12*n258)*n100*n12*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n12*n258)*n100*n171/(n251*n99) + pow(alpha, -n12*n258 + n62)*n12*n229*n25*n255 + n49*n74*n88)/n385 + n156*n24*n563*n86 + n162*n24*n561*n86 + n164*n24*n565*n86 + n170*n24*n566*n86 + n170*n86*(pow(alpha, n0*n38 - n15*n258)*n100*n15*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n15*n258)*n100*n181/(n251*n99) + pow(alpha, -n15*n258 + n62)*n15*n229*n25*n255 + n52*n77*n88)/n388 + n176*n24*n564*n86 + n176*n86*(pow(alpha, n0*n38 - n258*n7)*n100*n153/(n251*n99) + pow(alpha, n0*n38 - n258*n7)*n100*n25*n40*n7/(n251*n99) + pow(alpha, -n258*n7 + n62)*n229*n25*n255*n7 + n44*n69*n88)/n380 + n184*n24*n571*n86 + n184*n86*(pow(alpha, n0*n38 - n258*n8)*n100*n25*n40*n8/(n251*n99) + pow(alpha, n0*n38 - n258*n8)*n100*n40*n45/(n251*n99) + pow(alpha, -n258*n8 + n62)*n229*n25*n255*n8 + n45*n70*n88)/n381 + n186*n24*n567*n86 + n187*n24*n570*n86 + n24*n451*n531*n86*xF[4] + n24*n453*n533*n86 + n24*n456*n525*n86 + n24*n457*n520*n86 + n24*n459*n518*n86 + n24*n573*n86*xF[0] + n24*n574*n86 + n24*n575*n86 + n24*n576*n86 + n450*n86*xF[0]*(pow(alpha, -n0*n258 + n62)*n229*n39*n88/n249 + n205*n88) + n455*n86*(pow(alpha, n0*n38 - n17*n258)*n100*n148*n25/(n251*n99) + pow(alpha, n0*n38 - n17*n258)*n100*n40*n54/(n251*n99) + pow(alpha, -n17*n258 + n62)*n148*n229*n25/n249 + n208*n88) + n475 + n476 + n477 + n478 + n479 + n480 + n481 + n482 + n483 + n484 + n485 + n486 + n487 + n488 + n489 + n490 + n491 + n492 + n493 + n494 + n579 + n580 + n581 + n582 + n583 + n584 + n585 + n586 + n587 + n588 + n589 + n590 + n591 + n592 + n593 + n594 + n595 + n596 + n597 + n598)) - n474 - n86*xTj*(-n109*n562 - n115*n560 + n139*n559 + n143*n89/n340 + n144*n448 + n145*n92/n354 - n149*n547 - n150*n548 - n152*n550 - n156*n555 - n162*n551 + n164*n445*n514 - n170*n549 - n176*n553 - n184*n554 + n200*n439 + n201*n438 + n203*n442 + n204*n443 + n206*n444 + n209*n434 + n210*n431 + n211*n432 + n212*n428 + n215*xF[15]/n342 + n217*n429 + n219*n433 + n222*xF[3]/n349 + n223*xF[4]/n350 + n224*xF[5]/n351 + n225*xF[6]/n352 - n437*n544 - n440*n546 - n441*n545 + n449*n90 - n450*n538 - n452*n512 - n454*n508 - n455*n511 - n458*n515);
25632  NP_2a = -n86*(pow(alpha, n0*n38)*n33*n39*n40*pow(n496, -n24)*n96/n396 - 2.0*pow(alpha, n0*n38)*n39*n40*n496*xF[0]/n376 + n205*n450*n88*xF[0]*(n461*(-n26 + xPj*xTj)/n64 - 1) - 1.0*n244/n336 + 1.0*xTj*(-n107*n440*(pow(alpha, n0*n38 - n11*n258)*n0*n100*n11*n40/(n251*n99) + pow(alpha, n0*n38 - n11*n258)*n100*n48*n88/(n251*n99) + n158*n229*n255*n302 + n234) + n109*xF[19]*(pow(alpha, n0*n38 - n13*n258)*n100*n13*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n13*n258)*n100*n40*n50/(n251*n99) + n207*n88 + n229*n25*n255*n296*n63)/n386 - n112*n437*(pow(alpha, n0*n38 - n16*n258)*n0*n100*n16*n40/(n251*n99) + pow(alpha, n0*n38 - n16*n258)*n100*n53*n88/(n251*n99) + n158*n229*n255*n303 + n236) - n115*xF[6]*(pow(alpha, n0*n38 - n19*n258)*n0*n100*n19*n40/(n251*n99) + pow(alpha, n0*n38 - n19*n258)*n100*n56*n88/(n251*n99) + n158*n229*n255*n304 + n238)/n392 + n12*n144*n61*(pow(alpha, -n12*n258 + n62)*n1*n12*n229/n249 + n218)/n385 + n139*xF[12]*(pow(alpha, n0*n38 - n258*n6)*n0*n100*n40*n6/(n251*n99) + pow(alpha, n0*n38 - n258*n6)*n100*n43*n88/(n251*n99) + n158*n229*n255*n294 + n232)/n379 + n143*n153/n340 + n143*n61*n7*(pow(alpha, -n258*n7 + n62)*n229*n89/n249 + n213)/n380 + n144*n171/n345 + n145*n174/n354 + n145*n21*n61*(pow(alpha, -n21*n258 + n62)*n229*n92/n249 + n227)/n394 + n147*n15*n61*(pow(alpha, -n15*n258 + n62)*n229*n90/n249 + n221)/n388 + n149*n24*n569 + n149*(pow(alpha, n0*n38 - n10*n258)*n10*n100*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n10*n258)*n100*n40*n47/(n251*n99) + n229*n25*n255*n308*n63 + n47*n72*n88)/n383 + n150*n24*n568 + n150*(pow(alpha, n0*n38 - n258*n5)*n100*n25*n40*n5/(n251*n99) + pow(alpha, n0*n38 - n258*n5)*n100*n40*n42/(n251*n99) + n202*n88 + n229*n25*n255*n311*n63)/n378 + n152*n24*n558 + n152*(pow(alpha, n0*n38 - n12*n258)*n100*n12*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n12*n258)*n100*n171/(n251*n99) + n12*n229*n25*n255*n63/n269 + n49*n74*n88)/n385 + n154*n437*n61*(pow(alpha, -n16*n258 + n62)*n1*n16*n229/n249 + n222) + n156*n24*n563 - n156*(pow(alpha, n0*n38 - n258*n9)*n0*n100*n40*n9/(n251*n99) + pow(alpha, n0*n38 - n258*n9)*n100*n46*n88/(n251*n99) + n158*n229*n255*n321 + n233)/n382 + n157*n61*xF[6]*(pow(alpha, -n19*n258 + n62)*n1*n19*n229/n249 + n225)/n392 + n162*n24*n561 - n162*(pow(alpha, n0*n38 - n22*n258)*n100*n40*n93/(n251*n99) + pow(alpha, n0*n38 - n22*n258)*n100*n59*n88/(n251*n99) + n229*n255*n63*n93/n279 + n241)/n395 + n163*n441*n61*(pow(alpha, -n258*n4 + n62)*n1*n229*n4/n249 + n210) + n164*n24*n565 + n164*n445*(pow(alpha, n0*n38 - n20*n258)*n0*n100*n20*n40/(n251*n99) + pow(alpha, n0*n38 - n20*n258)*n100*n57*n88/(n251*n99) + n158*n229*n255*n297 + n239) + n169*n61*xF[19]*(pow(alpha, -n13*n258 + n62)*n1*n13*n229/n249 + n219)/n386 + n170*n24*n566 + n170*(pow(alpha, n0*n38 - n15*n258)*n100*n15*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n15*n258)*n100*n181/(n251*n99) + n229*n25*n255*n316*n63 + n52*n77*n88)/n388 + n176*n24*n564 + n176*(pow(alpha, n0*n38 - n258*n7)*n100*n153/(n251*n99) + pow(alpha, n0*n38 - n258*n7)*n100*n25*n40*n7/(n251*n99) + n229*n25*n255*n292*n63 + n44*n69*n88)/n380 + n18*n61*n80*xF[5]*(pow(alpha, -n18*n258 + n62)*n229*n87/n249 + n224)/n391 + n181*n449 + n184*n24*n571 + n186*n24*n567 + n187*n24*n570 + n194*n61*xF[15]*(pow(alpha, -n258*n9 + n62)*n229*n91/n249 + n215)/n382 + n200*n61*(pow(alpha, -n258*n8 + n62)*n1*n229*n8/n249 + n214)/n381 + n202*n40*n432 + n203*n61*(pow(alpha, -n10*n258 + n62)*n1*n10*n229/n249 + n216)/n383 + n204*n61*(pow(alpha, -n22*n258 + n62)*n1*n22*n229/n249 + n228)/n395 + n206*n61*(pow(alpha, -n20*n258 + n62)*n1*n20*n229/n249 + n226)/n393 + n207*n40*n433 + n211*n30*(pow(alpha, -n258*n5 + n62)*n1*n229*n5/n249 + n211)/n378 + n212*n29*(pow(alpha, -n258*n6 + n62)*n1*n229*n6/n249 + n212)/n379 + n217*n36*(pow(alpha, -n11*n258 + n62)*n1*n11*n229/n249 + n217)/n384 + n220*n35*(pow(alpha, -n14*n258 + n62)*n1*n14*n229/n249 + n220)/n387 + n223*n28*(pow(alpha, -n17*n258 + n62)*n1*n17*n229/n249 + n223)/n390 + n231*n431 + n232*n428 + n233*xF[15]/n342 + n234*n429 + n237*xF[5]/n351 + n24*n25*n447*n63*xF[0]*(pow(alpha, n25*n258 + n62)*n0*n1*n229/n249 + n209) + n24*n451*n531*xF[4] + n24*n453*n533 + n24*n456*n525 + n24*n457*n520 + n24*n459*n518 + n24*n573*xF[0] + n24*n574 + n24*n575 + n24*n576 + n242*n436 + n243*n435 + n244/n336 + n245/n353 + n246/n352 + n247/n349 + n248/n350 - n441*n97*(pow(alpha, n0*n38 - n258*n4)*n0*n100*n4*n40/(n251*n99) + pow(alpha, n0*n38 - n258*n4)*n100*n41*n88/(n251*n99) + n158*n229*n255*n324 + n231) + n450*n543*xF[0] - n452*(pow(alpha, n0*n38 - n18*n258)*n100*n40*n94/(n251*n99) + pow(alpha, n0*n38 - n18*n258)*n100*n55*n88/(n251*n99) + n229*n255*n63*n94/n275 + n237) - n454*(pow(alpha, n0*n38 - n14*n258)*n0*n100*n14*n40/(n251*n99) + pow(alpha, n0*n38 - n14*n258)*n100*n51*n88/(n251*n99) + n158*n229*n255*n314 + n235) + n455*(pow(alpha, n0*n38 - n17*n258)*n100*n148*n25/(n251*n99) + pow(alpha, n0*n38 - n17*n258)*n100*n40*n54/(n251*n99) + n148*n229*n25*n460*n63 + n208*n88) - n458*(pow(alpha, n0*n38 - n21*n258)*n0*n100*n21*n40/(n251*n99) + pow(alpha, n0*n38 - n21*n258)*n100*n58*n88/(n251*n99) + n158*n229*n255*n307 + n240) + n466 + n467 + n615));
25633  NP_sqrt_base = (NP0*n636 + n142*n179/n356 + n32*(-n102*n86*xF[12]/(n102 - 1 + pow(alpha, -n6*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n107*n86*xF[17]/(n107 - 1 + pow(alpha, -n11*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n109*n86*xF[19]/(n109 - 1 + pow(alpha, -n13*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n112*n86*xF[3]/(n112 - 1 + pow(alpha, -n16*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n113*n86*xF[4]/(n113 - 1 + pow(alpha, -n17*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n115*n86*xF[6]/(n115 - 1 + pow(alpha, -n19*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n149*n86/(n106 - 1 + pow(alpha, -n10*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n150*n86/(n101 - 1 + pow(alpha, -n5*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n152*n86/(n108 - 1 + pow(alpha, -n12*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n156*n86/(n105 - 1 + pow(alpha, -n9*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n162*n86/(n118 - 1 + pow(alpha, -n22*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n164*n86/(n116 - 1 + pow(alpha, -n20*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n170*n86/(n111 - 1 + pow(alpha, -n15*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n176*n86/(n103 - 1 + pow(alpha, -n7*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n184*n86/(n104 - 1 + pow(alpha, -n8*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n186*n86/(n114 - 1 + pow(alpha, -n18*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n187*n86/(n110 - 1 + pow(alpha, -n14*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n197*n86/(n117 - 1 + pow(alpha, -n21*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) - n86*n96*xF[0]/(pow(alpha, n25*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)) + n96 - 1) - n86*n97*xF[10]/(n97 - 1 + pow(alpha, -n4*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)))) + pow(NP0, -n24)*(1.0*n209*n538*n86/n376 + 0.5*n475 - 0.5*n538*n572*n86*n96 + 0.5*n600 - 0.5*n638*xTj))*(n119*n31*n541*n86/n427 - 4.0*n209*n446*n86*(pow(alpha, n25*n259)*n0*n253/n250 + n0*n1*n63) + n24*n32*(n1*n24*n25*n63*n86*xF[0]*(n209 + pow(alpha, -n0*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n209*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n96 - 1 + pow(alpha, -n0*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n12*n144*n61*n86*(n218 + pow(alpha, -n12*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n12*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n108 - 1 + pow(alpha, -n12*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n121*n24*n86*xF[11]*pow(n211 + pow(alpha, -n5*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n5*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n101 - 1 + pow(alpha, -n5*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n121*n86*xF[11]*pow(n101 - 1 + pow(alpha, -n5*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(-pow(alpha, n0*n38)*pow(alpha, -n5*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n40*n5*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - pow(alpha, n0*n38)*pow(alpha, -n5*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n42*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - n202*n40 - pow(alpha, -n5*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n40*n5*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n122*n142*xF[12]*pow(-n139 - 1 + pow(alpha, -n6*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n6*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n40*n6*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n6*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n43*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n232 + pow(alpha, -n6*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n40*n6*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n122*n24*n86*xF[12]*pow(n212 + pow(alpha, -n6*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n6*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(-n139 - 1 + pow(alpha, -n6*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n142*n151*pow(n114 - 1 + pow(alpha, -n18*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n18*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n40*n94*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n18*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n55*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n237 + pow(alpha, -n18*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n40*n63*n94*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n165*pow(n112 - 1 + pow(alpha, -n16*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n16*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n16*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n16*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n53*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n236 + pow(alpha, -n16*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n16*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n166*pow(n107 - 1 + pow(alpha, -n11*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n11*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n11*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n11*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n48*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n234 + pow(alpha, -n11*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n11*n158*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n167*pow(n116 - 1 + pow(alpha, -n20*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n20*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n20*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n20*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n57*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n239 + pow(alpha, -n20*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n20*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n172*pow(n110 - 1 + pow(alpha, -n14*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n14*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n14*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n14*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n51*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n235 + pow(alpha, -n14*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n14*n158*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n175*pow(n118 - 1 + pow(alpha, -n22*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n22*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n40*n93*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n22*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n59*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n241 + pow(alpha, -n22*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n40*n63*n93*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n177*pow(n105 - 1 + pow(alpha, -n9*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n9*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n40*n9*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n9*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n46*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n233 + pow(alpha, -n9*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n40*n9*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n190*pow(n115 - 1 + pow(alpha, -n19*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n19*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n19*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n19*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n56*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n238 + pow(alpha, -n19*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n19*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n195*pow(n97 - 1 + pow(alpha, -n4*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n4*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n4*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n4*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n41*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n231 + pow(alpha, -n4*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n4*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n142*n196*pow(n117 - 1 + pow(alpha, -n21*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(pow(alpha, n0*n38)*pow(alpha, -n21*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n21*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + pow(alpha, n0*n38)*pow(alpha, -n21*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n58*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) + n240 + pow(alpha, -n21*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n21*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n143*n153*n86/(n103 - 1 + pow(alpha, -n7*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n143*n61*n7*n86*(n213 + pow(alpha, -n7*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n89*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n103 - 1 + pow(alpha, -n7*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n144*n171*n86/(n108 - 1 + pow(alpha, -n12*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n145*n174*n86/(n117 - 1 + pow(alpha, -n21*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n145*n21*n61*n86*(n227 + pow(alpha, -n21*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n92*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n117 - 1 + pow(alpha, -n21*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n147*n15*n61*n86*(n221 + pow(alpha, -n15*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n90*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n111 - 1 + pow(alpha, -n15*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n147*n181*n86/(n111 - 1 + pow(alpha, -n15*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n151*n24*n86*pow(n224 + pow(alpha, -n18*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n87*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n114 - 1 + pow(alpha, -n18*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n154*n61*n86*xF[3]*(n1*n16*n78 + pow(alpha, -n16*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n16*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n112 - 1 + pow(alpha, -n16*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n155*n24*n86*pow(n216 + pow(alpha, -n10*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n10*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n106 - 1 + pow(alpha, -n10*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n155*n86*pow(n106 - 1 + pow(alpha, -n10*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(-pow(alpha, n0*n38)*pow(alpha, -n10*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n10*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - pow(alpha, n0*n38)*pow(alpha, -n10*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n47*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - n243 - pow(alpha, -n10*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n10*n158*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n157*n61*n86*xF[6]*(n1*n19*n81 + pow(alpha, -n19*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n19*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n115 - 1 + pow(alpha, -n19*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n163*n61*n86*xF[10]*(n1*n4*n66 + pow(alpha, -n4*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n4*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n97 - 1 + pow(alpha, -n4*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n165*n24*n86*pow(n222 + pow(alpha, -n16*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n16*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n112 - 1 + pow(alpha, -n16*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n166*n24*n86*pow(n217 + pow(alpha, -n11*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n11*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n107 - 1 + pow(alpha, -n11*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n167*n24*n86*pow(n226 + pow(alpha, -n20*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n20*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n116 - 1 + pow(alpha, -n20*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n168*n24*n86*pow(n223 + pow(alpha, -n17*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n17*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n113 - 1 + pow(alpha, -n17*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n168*n86*pow(n113 - 1 + pow(alpha, -n17*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(-pow(alpha, n0*n38)*pow(alpha, -n17*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n148*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - pow(alpha, n0*n38)*pow(alpha, -n17*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n54*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - n208*n40 - pow(alpha, -n17*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n148*n158*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n169*n61*n86*xF[19]*(n1*n13*n75 + pow(alpha, -n13*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n13*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n109 - 1 + pow(alpha, -n13*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n172*n24*n86*pow(n220 + pow(alpha, -n14*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n14*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n110 - 1 + pow(alpha, -n14*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n175*n24*n86*pow(n228 + pow(alpha, -n22*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n22*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n118 - 1 + pow(alpha, -n22*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n177*n24*n86*pow(n215 + pow(alpha, -n9*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n91*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n105 - 1 + pow(alpha, -n9*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n178*n24*n86*pow(n214 + pow(alpha, -n8*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n63*n8*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n104 - 1 + pow(alpha, -n8*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n178*n86*pow(n104 - 1 + pow(alpha, -n8*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(-pow(alpha, n0*n38)*pow(alpha, -n8*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n40*n8*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - pow(alpha, n0*n38)*pow(alpha, -n8*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n45*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - n242 - pow(alpha, -n8*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n40*n8*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n179*n24*n86*pow(pow(alpha, n25*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n209*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + n209, -n24)/pow(n96 - 1 + pow(alpha, -n0*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n179*n86*(-n205*n40 - pow(alpha, -n0*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n205*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n96 - 1 + pow(alpha, -n0*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n18*n61*n80*n86*xF[5]*(n224 + pow(alpha, -n18*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n87*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n114 - 1 + pow(alpha, -n18*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n183*n24*n86*pow(n221 + pow(alpha, -n15*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n90*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n111 - 1 + pow(alpha, -n15*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n183*n86*pow(n111 - 1 + pow(alpha, -n15*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(-pow(alpha, n0*n38)*pow(alpha, -n15*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n15*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - pow(alpha, n0*n38)*pow(alpha, -n15*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n52*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - n181*n77 - pow(alpha, -n15*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n15*n158*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n189*n24*n86*pow(n213 + pow(alpha, -n7*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n89*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n103 - 1 + pow(alpha, -n7*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n189*n86*pow(n103 - 1 + pow(alpha, -n7*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(-pow(alpha, n0*n38)*pow(alpha, -n7*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n40*n7*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - pow(alpha, n0*n38)*pow(alpha, -n7*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n44*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - n153*n69 - pow(alpha, -n7*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n158*n40*n7*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n190*n24*n86*pow(n225 + pow(alpha, -n19*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n19*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n115 - 1 + pow(alpha, -n19*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n191*n24*n86*pow(n219 + pow(alpha, -n13*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n13*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n109 - 1 + pow(alpha, -n13*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n191*n86*pow(n109 - 1 + pow(alpha, -n13*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(-pow(alpha, n0*n38)*pow(alpha, -n13*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n0*n13*n40*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - pow(alpha, n0*n38)*pow(alpha, -n13*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n50*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - n207*n40 - pow(alpha, -n13*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n13*n158*n40*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n194*n61*n86*xF[15]*(n215 + pow(alpha, -n9*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n91*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n105 - 1 + pow(alpha, -n9*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n195*n24*n86*pow(n210 + pow(alpha, -n4*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n4*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n97 - 1 + pow(alpha, -n4*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n196*n24*n86*pow(n227 + pow(alpha, -n21*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n63*n92*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n117 - 1 + pow(alpha, -n21*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n198*n24*n86*pow(n218 + pow(alpha, -n12*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n12*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)), -n24)/pow(n108 - 1 + pow(alpha, -n12*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), 3) + n198*n86*pow(n108 - 1 + pow(alpha, -n12*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24)*(-pow(alpha, n0*n38)*pow(alpha, -n12*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n40*n95*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - pow(alpha, n0*n38)*pow(alpha, -n12*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n49*n88*pow(n26 + n34*xTj, -n24)*pow(n26 - xF[0]*xTj, n24)*pow(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1, n24) - n171*n74 - pow(alpha, -n12*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n40*n63*n95*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1))) + n200*n61*n86*(n1*n70*n8 + pow(alpha, -n8*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n63*n8*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n104 - 1 + pow(alpha, -n8*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n202*n40*n86*xF[11]/(n101 - 1 + pow(alpha, -n5*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n203*n61*n86*(n1*n10*n72 + pow(alpha, -n10*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n10*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n106 - 1 + pow(alpha, -n10*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n204*n61*n86*(n1*n22*n84 + pow(alpha, -n22*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n22*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n118 - 1 + pow(alpha, -n22*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n206*n61*n86*(n1*n20*n82 + pow(alpha, -n20*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n20*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n116 - 1 + pow(alpha, -n20*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n207*n40*n86*xF[19]/(n109 - 1 + pow(alpha, -n13*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n211*n30*n86*(n1*n5*n67 + pow(alpha, -n5*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n5*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n101 - 1 + pow(alpha, -n5*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n212*n29*n86*(n1*n6*n68 + pow(alpha, -n6*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n6*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(-n139 - 1 + pow(alpha, -n6*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n217*n36*n86*(n1*n11*n73 + pow(alpha, -n11*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n11*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n107 - 1 + pow(alpha, -n11*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n220*n35*n86*(n1*n14*n76 + pow(alpha, -n14*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n14*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n110 - 1 + pow(alpha, -n14*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n223*n28*n86*(n1*n17*n79 + pow(alpha, -n17*(n146*(n254 - log(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))*n1*n17*n63*(n26 + n34*xTj)/((n26 - xF[0]*xTj)*(-n63*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)))*pow(n113 - 1 + pow(alpha, -n17*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)), n24) + n231*n86*xF[10]/(n97 - 1 + pow(alpha, -n4*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n232*n86*xF[12]/(-n139 - 1 + pow(alpha, -n6*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n233*n86*xF[15]/(n105 - 1 + pow(alpha, -n9*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n234*n86*xF[17]/(n107 - 1 + pow(alpha, -n11*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n235*n86*xF[1]/(n110 - 1 + pow(alpha, -n14*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n237*n86*xF[5]/(n114 - 1 + pow(alpha, -n18*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n241*n86*xF[9]/(n118 - 1 + pow(alpha, -n22*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n242*n86*xF[14]/(n104 - 1 + pow(alpha, -n8*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n243*n86*xF[16]/(n106 - 1 + pow(alpha, -n10*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n244*n86/(n96 - 1 + pow(alpha, -n0*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n245*n86/(n116 - 1 + pow(alpha, -n20*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n246*n86/(n115 - 1 + pow(alpha, -n19*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n247*n86/(n112 - 1 + pow(alpha, -n16*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1))) + n248*n86/(n113 - 1 + pow(alpha, -n17*(n146*(n254 - log(n140*(n26 + n34*xTj)/(n26 - xF[0]*xTj) + 1)) + 1)))) - 2.0*n244*n86/n356 - 2.0*n578*n86) + pow(-n38*(1.0*n209*n86*xF[0]*(pow(alpha, -n0*n258 + n62)*n0*n1*n229/n249 + n209)/n376 + 0.5*n450*n86*xF[0]*(pow(alpha, -n0*n258 + n62)*n229*n39*n88/n249 + n205*n88) + n495 - 0.5*xTj*(n107*n142*n440*(pow(alpha, n0*n38 - n11*n258)*n0*n100*n11*n40/(n251*n99) + pow(alpha, n0*n38 - n11*n258)*n100*n48*n88/(n251*n99) + pow(alpha, -n11*n258 + n62)*n0*n11*n229*n255 + n234) + n109*n142*xF[19]*(pow(alpha, -n13*n258 + n62)*n1*n13*n229/n249 + n219)*(pow(alpha, -n13*n258 + n62)*n13*n229*n61/n249 + n169*n61)/n406 + n109*n86*xF[19]*(pow(alpha, n0*n38 - n13*n258)*n100*n13*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n13*n258)*n100*n40*n50/(n251*n99) + pow(alpha, -n13*n258 + n62)*n13*n229*n25*n255 + n207*n88)/n386 + n112*n142*n437*(pow(alpha, n0*n38 - n16*n258)*n0*n100*n16*n40/(n251*n99) + pow(alpha, n0*n38 - n16*n258)*n100*n53*n88/(n251*n99) + pow(alpha, -n16*n258 + n62)*n0*n16*n229*n255 + n236) + n112*n142*xF[3]*(pow(alpha, -n16*n258 + n62)*n1*n16*n229/n249 + n222)*(pow(alpha, -n16*n258 + n62)*n16*n229*n61/n249 + n154*n61)/n409 + n115*n142*xF[6]*(pow(alpha, n0*n38 - n19*n258)*n0*n100*n19*n40/(n251*n99) + pow(alpha, n0*n38 - n19*n258)*n100*n56*n88/(n251*n99) + pow(alpha, -n19*n258 + n62)*n0*n19*n229*n255 + n238)/n392 + n139*n86*xF[12]*(pow(alpha, -n258*n6 + n62)*n1*n229*n6/n249 + n212)*(pow(alpha, -n258*n6 + n62)*n229*n6*n61/n249 + n6*n61*n68)/n399 + n139*n86*xF[12]*(pow(alpha, n0*n38 - n258*n6)*n0*n100*n40*n6/(n251*n99) + pow(alpha, n0*n38 - n258*n6)*n100*n43*n88/(n251*n99) + pow(alpha, -n258*n6 + n62)*n0*n229*n255*n6 + n232)/n379 + n142*n149*(pow(alpha, -n10*n258 + n62)*n1*n10*n229/n249 + n216)*(pow(alpha, -n10*n258 + n62)*n10*n229*n61/n249 + n182*n61)/n403 + n142*n150*(pow(alpha, -n258*n5 + n62)*n1*n229*n5/n249 + n211)*(pow(alpha, -n258*n5 + n62)*n229*n5*n61/n249 + n5*n61*n67)/n398 + n142*n152*(pow(alpha, -n12*n258 + n62)*n1*n12*n229/n249 + n218)*(pow(alpha, -n12*n258 + n62)*n12*n229*n61/n249 + n192*n61)/n405 + n142*n156*(pow(alpha, -n258*n9 + n62)*n229*n91/n249 + n215)*(pow(alpha, -n258*n9 + n62)*n229*n61*n9/n249 + n194*n61)/n402 + n142*n156*(pow(alpha, n0*n38 - n258*n9)*n0*n100*n40*n9/(n251*n99) + pow(alpha, n0*n38 - n258*n9)*n100*n46*n88/(n251*n99) + pow(alpha, -n258*n9 + n62)*n0*n229*n255*n9 + n233)/n382 + n142*n162*(pow(alpha, -n22*n258 + n62)*n1*n22*n229/n249 + n228)*(pow(alpha, -n22*n258 + n62)*n22*n229*n61/n249 + n185*n61)/n415 + n142*n162*(pow(alpha, n0*n38 - n22*n258)*n100*n40*n93/(n251*n99) + pow(alpha, n0*n38 - n22*n258)*n100*n59*n88/(n251*n99) + pow(alpha, -n22*n258 + n62)*n229*n255*n93 + n241)/n395 + n142*n164*(pow(alpha, -n20*n258 + n62)*n1*n20*n229/n249 + n226)*(pow(alpha, -n20*n258 + n62)*n20*n229*n61/n249 + n193*n61)/n413 + n142*n164*(pow(alpha, n0*n38 - n20*n258)*n0*n100*n20*n40/(n251*n99) + pow(alpha, n0*n38 - n20*n258)*n100*n57*n88/(n251*n99) + pow(alpha, -n20*n258 + n62)*n0*n20*n229*n255 + n239)/n393 + n142*n170*(pow(alpha, -n15*n258 + n62)*n229*n90/n249 + n221)*(pow(alpha, -n15*n258 + n62)*n15*n229*n61/n249 + n15*n61*n77)/n408 + n142*n176*(pow(alpha, -n258*n7 + n62)*n229*n89/n249 + n213)*(pow(alpha, -n258*n7 + n62)*n229*n61*n7/n249 + n61*n69*n7)/n400 + n142*n184*(pow(alpha, -n258*n8 + n62)*n1*n229*n8/n249 + n214)*(pow(alpha, -n258*n8 + n62)*n229*n61*n8/n249 + n173*n61)/n401 + n142*n186*(pow(alpha, -n18*n258 + n62)*n229*n87/n249 + n224)*(pow(alpha, -n18*n258 + n62)*n18*n229*n61/n249 + n18*n61*n80)/n411 + n142*n187*(pow(alpha, -n14*n258 + n62)*n1*n14*n229/n249 + n220)*(pow(alpha, -n14*n258 + n62)*n14*n229*n61/n249 + n188*n61)/n407 + n142*n197*(pow(alpha, -n21*n258 + n62)*n229*n92/n249 + n227)*(pow(alpha, -n21*n258 + n62)*n21*n229*n61/n249 + n21*n61*n83)/n414 + n142*n441*n97*(pow(alpha, n0*n38 - n258*n4)*n0*n100*n4*n40/(n251*n99) + pow(alpha, n0*n38 - n258*n4)*n100*n41*n88/(n251*n99) + pow(alpha, -n258*n4 + n62)*n0*n229*n255*n4 + n231) + n142*n451*xF[4]*(pow(alpha, -n17*n258 + n62)*n1*n17*n229/n249 + n223)*(pow(alpha, -n17*n258 + n62)*n17*n229*n61/n249 + n17*n61*n79) + n142*n452*(pow(alpha, n0*n38 - n18*n258)*n100*n40*n94/(n251*n99) + pow(alpha, n0*n38 - n18*n258)*n100*n55*n88/(n251*n99) + pow(alpha, -n18*n258 + n62)*n229*n255*n94 + n237) + n142*n453*(pow(alpha, -n19*n258 + n62)*n1*n19*n229/n249 + n225)*(pow(alpha, -n19*n258 + n62)*n19*n229*n61/n249 + n157*n61) + n142*n454*(pow(alpha, n0*n38 - n14*n258)*n0*n100*n14*n40/(n251*n99) + pow(alpha, n0*n38 - n14*n258)*n100*n51*n88/(n251*n99) + pow(alpha, -n14*n258 + n62)*n0*n14*n229*n255 + n235) + n142*n456*(pow(alpha, -n11*n258 + n62)*n1*n11*n229/n249 + n217)*(pow(alpha, -n11*n258 + n62)*n11*n229*n61/n249 + n161*n61) + n142*n458*(pow(alpha, n0*n38 - n21*n258)*n0*n100*n21*n40/(n251*n99) + pow(alpha, n0*n38 - n21*n258)*n100*n58*n88/(n251*n99) + pow(alpha, -n21*n258 + n62)*n0*n21*n229*n255 + n240) + n142*n459*(pow(alpha, -n258*n4 + n62)*n1*n229*n4/n249 + n210)*(pow(alpha, -n258*n4 + n62)*n229*n4*n61/n249 + n163*n61) + n142*n96*xF[0]*(pow(alpha, -n0*n258 + n62)*n0*n1*n229/n249 + n209)*(pow(alpha, -n0*n258 + n62)*n1*n229*n24*n25/n249 + n1*n24*n25*n63)/n396 + n149*n86*(pow(alpha, n0*n38 - n10*n258)*n10*n100*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n10*n258)*n100*n40*n47/(n251*n99) + pow(alpha, -n10*n258 + n62)*n10*n229*n25*n255 + n47*n72*n88)/n383 + n150*n86*(pow(alpha, n0*n38 - n258*n5)*n100*n25*n40*n5/(n251*n99) + pow(alpha, n0*n38 - n258*n5)*n100*n40*n42/(n251*n99) + pow(alpha, -n258*n5 + n62)*n229*n25*n255*n5 + n202*n88)/n378 + n152*n86*(pow(alpha, n0*n38 - n12*n258)*n100*n12*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n12*n258)*n100*n171/(n251*n99) + pow(alpha, -n12*n258 + n62)*n12*n229*n25*n255 + n49*n74*n88)/n385 + n170*n86*(pow(alpha, n0*n38 - n15*n258)*n100*n15*n25*n40/(n251*n99) + pow(alpha, n0*n38 - n15*n258)*n100*n181/(n251*n99) + pow(alpha, -n15*n258 + n62)*n15*n229*n25*n255 + n52*n77*n88)/n388 + n176*n86*(pow(alpha, n0*n38 - n258*n7)*n100*n153/(n251*n99) + pow(alpha, n0*n38 - n258*n7)*n100*n25*n40*n7/(n251*n99) + pow(alpha, -n258*n7 + n62)*n229*n25*n255*n7 + n44*n69*n88)/n380 + n184*n86*(pow(alpha, n0*n38 - n258*n8)*n100*n25*n40*n8/(n251*n99) + pow(alpha, n0*n38 - n258*n8)*n100*n40*n45/(n251*n99) + pow(alpha, -n258*n8 + n62)*n229*n25*n255*n8 + n45*n70*n88)/n381 + n450*n86*xF[0]*(pow(alpha, -n0*n258 + n62)*n229*n39*n88/n249 + n205*n88) + n455*n86*(pow(alpha, n0*n38 - n17*n258)*n100*n148*n25/(n251*n99) + pow(alpha, n0*n38 - n17*n258)*n100*n40*n54/(n251*n99) + pow(alpha, -n17*n258 + n62)*n148*n229*n25/n249 + n208*n88) + n475 + n476 + n477 + n478 + n479 + n480 + n481 + n482 + n483 + n484 + n485 + n486 + n487 + n488 + n489 + n490 + n491 + n492 + n493 + n494 + n579 + n580 + n581 + n582 + n583 + n584 + n585 + n586 + n587 + n588 + n589 + n590 + n591 + n592 + n593 + n594 + n595 + n596 + n597 + n598) - 0.5*n86*n96*xF[0]*(pow(alpha, -n0*n258 + n62)*n0*n1*n229/n249 + n209)*(pow(alpha, -n0*n258 + n62)*n1*n229*n24*n25/n249 + n1*n24*n25*n63)/n396) - n636, -n24);
25634  NP_sqrt_base = fabs(NP_sqrt_base);
25635  NP1 = (-NP_b - sqrt(NP_sqrt_base))/NP_2a;
25636  NT1 = n146*(n254 - log(-pow(alpha, NP1*n0)*n229 + 1));
25637  g0 = MW[1] - Mstar;
25638  g1 = MW[0] - Mstar;
25639  g2 = NT1 + 1;
25640  g3 = xPj - xTj;
25641  g4 = MW[10] - Mstar;
25642  g5 = MW[11] - Mstar;
25643  g6 = MW[12] - Mstar;
25644  g7 = MW[13] - Mstar;
25645  g8 = MW[14] - Mstar;
25646  g9 = MW[15] - Mstar;
25647  g10 = MW[16] - Mstar;
25648  g11 = MW[17] - Mstar;
25649  g12 = MW[18] - Mstar;
25650  g13 = MW[19] - Mstar;
25651  g14 = MW[2] - Mstar;
25652  g15 = MW[3] - Mstar;
25653  g16 = MW[4] - Mstar;
25654  g17 = MW[5] - Mstar;
25655  g18 = MW[6] - Mstar;
25656  g19 = MW[7] - Mstar;
25657  g20 = MW[8] - Mstar;
25658  g21 = MW[9] - Mstar;
25659  g22 = xF[0] - xTj;
25660  g23 = xF[0] - xPj;
25661  g24 = -xTj;
25662  g25 = xPj/xF[1];
25663  g26 = pow(alpha, -g1);
25664  g27 = pow(alpha, -g4);
25665  g28 = pow(alpha, -g5);
25666  g29 = pow(alpha, -g6);
25667  g30 = pow(alpha, -g7);
25668  g31 = pow(alpha, -g8);
25669  g32 = pow(alpha, -g9);
25670  g33 = pow(alpha, -g10);
25671  g34 = pow(alpha, -g11);
25672  g35 = pow(alpha, -g12);
25673  g36 = pow(alpha, -g13);
25674  g37 = pow(alpha, -g0);
25675  g38 = pow(alpha, -g14);
25676  g39 = pow(alpha, -g15);
25677  g40 = pow(alpha, -g16);
25678  g41 = pow(alpha, -g17);
25679  g42 = pow(alpha, -g18);
25680  g43 = pow(alpha, -g19);
25681  g44 = pow(alpha, -g20);
25682  g45 = pow(alpha, -g21);
25683  g46 = log(xF[0]/xF[1]);
25684  g47 = -g2;
25685  g48 = pow(alpha, NP1*g0);
25686  g49 = pow(alpha, NP1*g1);
25687  g50 = pow(alpha, NP1*g4);
25688  g51 = log(g26);
25689  g52 = pow(alpha, NP1*g5);
25690  g53 = pow(alpha, NP1*g6);
25691  g54 = pow(alpha, NP1*g7);
25692  g55 = pow(alpha, NP1*g8);
25693  g56 = pow(alpha, NP1*g9);
25694  g57 = pow(alpha, NP1*g10);
25695  g58 = pow(alpha, NP1*g11);
25696  g59 = pow(alpha, NP1*g12);
25697  g60 = pow(alpha, NP1*g13);
25698  g61 = pow(alpha, NP1*g14);
25699  g62 = pow(alpha, NP1*g15);
25700  g63 = pow(alpha, NP1*g16);
25701  g64 = pow(alpha, NP1*g17);
25702  g65 = pow(alpha, NP1*g18);
25703  g66 = pow(alpha, NP1*g19);
25704  g67 = pow(alpha, NP1*g20);
25705  g68 = pow(alpha, NP1*g21);
25706  g69 = -g46;
25707  g70 = g22/g3;
25708  g71 = g3/g22;
25709  g72 = -g48 + 1;
25710  g73 = -g48 + 1;
25711  g74 = -g49 + 1;
25712  g75 = -g61 + 1;
25713  g76 = -g62 + 1;
25714  g77 = -g63 + 1;
25715  g78 = -g64 + 1;
25716  g79 = -g65 + 1;
25717  g80 = -g66 + 1;
25718  g81 = -g67 + 1;
25719  g82 = -g68 + 1;
25720  g83 = -g50 + 1;
25721  g84 = -g52 + 1;
25722  g85 = -g53 + 1;
25723  g86 = -g54 + 1;
25724  g87 = -g55 + 1;
25725  g88 = -g56 + 1;
25726  g89 = -g57 + 1;
25727  g90 = -g58 + 1;
25728  g91 = -g59 + 1;
25729  g92 = -g60 + 1;
25730  g93 = -g49;
25731  g94 = -g50;
25732  g95 = -g52;
25733  g96 = -g53;
25734  g97 = -g54;
25735  g98 = -g55;
25736  g99 = -g56;
25737  g100 = -g57;
25738  g101 = -g58;
25739  g102 = -g59;
25740  g103 = -g60;
25741  g104 = -g61;
25742  g105 = -g62;
25743  g106 = -g63;
25744  g107 = -g64;
25745  g108 = -g65;
25746  g109 = -g66;
25747  g110 = -g67;
25748  g111 = -g68;
25749  g112 = -1.0*g46;
25750  g113 = -g3/g23;
25751  g114 = g23/(g3*xF[1]);
25752  g115 = pow(alpha, g0*g47) - 1;
25753  g116 = pow(alpha, g0*g47) - 1;
25754  g117 = pow(alpha, g1*g47) - 1;
25755  g118 = pow(alpha, g14*g47) - 1;
25756  g119 = pow(alpha, g15*g47) - 1;
25757  g120 = pow(alpha, g16*g47) - 1;
25758  g121 = pow(alpha, g17*g47) - 1;
25759  g122 = pow(alpha, g18*g47) - 1;
25760  g123 = pow(alpha, g19*g47) - 1;
25761  g124 = pow(alpha, g20*g47) - 1;
25762  g125 = pow(alpha, g21*g47) - 1;
25763  g126 = pow(alpha, g4*g47) - 1;
25764  g127 = pow(alpha, g47*g5) - 1;
25765  g128 = pow(alpha, g47*g6) - 1;
25766  g129 = pow(alpha, g47*g7) - 1;
25767  g130 = pow(alpha, g47*g8) - 1;
25768  g131 = pow(alpha, g47*g9) - 1;
25769  g132 = pow(alpha, g10*g47) - 1;
25770  g133 = pow(alpha, g11*g47) - 1;
25771  g134 = pow(alpha, g12*g47) - 1;
25772  g135 = pow(alpha, g13*g47) - 1;
25773  g136 = -pow(alpha, g1*g47);
25774  g137 = -pow(alpha, g4*g47);
25775  g138 = -pow(alpha, g47*g5);
25776  g139 = -pow(alpha, g47*g6);
25777  g140 = -pow(alpha, g47*g7);
25778  g141 = -pow(alpha, g47*g8);
25779  g142 = -pow(alpha, g47*g9);
25780  g143 = -pow(alpha, g10*g47);
25781  g144 = -pow(alpha, g11*g47);
25782  g145 = -pow(alpha, g12*g47);
25783  g146 = -pow(alpha, g13*g47);
25784  g147 = -pow(alpha, g14*g47);
25785  g148 = -pow(alpha, g15*g47);
25786  g149 = -pow(alpha, g16*g47);
25787  g150 = -pow(alpha, g17*g47);
25788  g151 = -pow(alpha, g18*g47);
25789  g152 = -pow(alpha, g19*g47);
25790  g153 = -pow(alpha, g20*g47);
25791  g154 = -pow(alpha, g21*g47);
25792  g155 = g116 + g73;
25793  g156 = -g136 - g49;
25794  g157 = -g137 - g50;
25795  g158 = -g138 - g52;
25796  g159 = -g139 - g53;
25797  g160 = -g140 - g54;
25798  g161 = -g141 - g55;
25799  g162 = -g142 - g56;
25800  g163 = -g143 - g57;
25801  g164 = -g144 - g58;
25802  g165 = -g145 - g59;
25803  g166 = -g146 - g60;
25804  g167 = -g147 - g61;
25805  g168 = -g148 - g62;
25806  g169 = -g149 - g63;
25807  g170 = -g150 - g64;
25808  g171 = -g151 - g65;
25809  g172 = -g152 - g66;
25810  g173 = -g153 - g67;
25811  g174 = -g154 - g68;
25812  g175 = pow(alpha, g1*g47) + g93;
25813  g176 = g116 + g73;
25814  g177 = pow(alpha, g4*g47) + g94;
25815  g178 = pow(alpha, g47*g5) + g95;
25816  g179 = pow(alpha, g47*g6) + g96;
25817  g180 = pow(alpha, g47*g7) + g97;
25818  g181 = pow(alpha, g47*g8) + g98;
25819  g182 = pow(alpha, g47*g9) + g99;
25820  g183 = pow(alpha, g10*g47) + g100;
25821  g184 = pow(alpha, g11*g47) + g101;
25822  g185 = pow(alpha, g12*g47) + g102;
25823  g186 = pow(alpha, g13*g47) + g103;
25824  g187 = pow(alpha, g14*g47) + g104;
25825  g188 = pow(alpha, g15*g47) + g105;
25826  g189 = pow(alpha, g16*g47) + g106;
25827  g190 = pow(alpha, g17*g47) + g107;
25828  g191 = pow(alpha, g18*g47) + g108;
25829  g192 = pow(alpha, g19*g47) + g109;
25830  g193 = pow(alpha, g20*g47) + g110;
25831  g194 = pow(alpha, g21*g47) + g111;
25832  g195 = xF[9]/g194;
25833  g196 = xF[8]/g193;
25834  g197 = xF[11]/g178;
25835  g198 = xF[1]/g176;
25836  g199 = xF[3]/g188;
25837  g200 = xF[10]/g177;
25838  g201 = xF[19]/g186;
25839  g202 = xF[17]/g184;
25840  g203 = xF[15]/g182;
25841  g204 = xF[16]/g183;
25842  g205 = xF[7]/g192;
25843  g206 = xF[4]/g189;
25844  g207 = xF[12]/g179;
25845  g208 = xF[13]/g180;
25846  g209 = xF[6]/g191;
25847  g210 = xF[14]/g181;
25848  g211 = xF[2]/g187;
25849  g212 = xF[5]/g190;
25850  g213 = xF[18]/g185;
25851  g214 = xF[0]/g175;
25852  g215 = xF[17]/g164;
25853  g216 = xF[0]/g156;
25854  g217 = xF[9]/g174;
25855  g218 = xF[4]/g169;
25856  g219 = xF[15]/g162;
25857  g220 = xF[2]/g167;
25858  g221 = xF[11]/g158;
25859  g222 = xF[18]/g165;
25860  g223 = xF[1]/g155;
25861  g224 = xF[13]/g160;
25862  g225 = xF[16]/g163;
25863  g226 = xF[3]/g168;
25864  g227 = xF[6]/g171;
25865  g228 = xF[14]/g161;
25866  g229 = xF[8]/g173;
25867  g230 = xF[12]/g159;
25868  g231 = xF[19]/g166;
25869  g232 = xF[10]/g157;
25870  g233 = xF[7]/g172;
25871  g234 = xF[5]/g170;
25872  g235 = g85/g159;
25873  g236 = g82/g174;
25874  g237 = g90/g164;
25875  g238 = g77/g169;
25876  g239 = g80/g172;
25877  g240 = g75/g167;
25878  g241 = g78/g170;
25879  g242 = g91/g165;
25880  g243 = g79/g171;
25881  g244 = g86/g160;
25882  g245 = g76/g168;
25883  g246 = g88/g162;
25884  g247 = g89/g163;
25885  g248 = g84/g158;
25886  g249 = g92/g166;
25887  g250 = g87/g161;
25888  g251 = g83/g157;
25889  g252 = g74/g156;
25890  g253 = g81/g173;
25891  g254 = g72/g155;
25892  g255 = g117/g156;
25893  g256 = g131/g162;
25894  g257 = g127/g158;
25895  g258 = g118/g167;
25896  g259 = g119/g168;
25897  g260 = g120/g169;
25898  g261 = g133/g164;
25899  g262 = g115/g155;
25900  g263 = g124/g173;
25901  g264 = g125/g174;
25902  g265 = g132/g163;
25903  g266 = g122/g171;
25904  g267 = g130/g161;
25905  g268 = g128/g159;
25906  g269 = g129/g160;
25907  g270 = g134/g165;
25908  g271 = g123/g172;
25909  g272 = g126/g157;
25910  g273 = g121/g170;
25911  g274 = g135/g166;
25912  g275 = log(g114*g176*g24/g73);
25913  g276 = log(g114*g155*g24/g72);
25914  g277 = log(g176*g25*g70/g116);
25915  g278 = 1.0*g275;
25916  g279 = log(g155*g25*g70/g115);
25917  g280 = 1.0*g277;
25918  g281 = -g112*xF[0] - g112*xF[10] - g112*xF[11] - g112*xF[12] - g112*xF[13] - g112*xF[14] - g112*xF[15] - g112*xF[16] - g112*xF[17] - g112*xF[18] - g112*xF[19] - g112*xF[1] - g112*xF[2] - g112*xF[3] - g112*xF[4] - g112*xF[5] - g112*xF[6] - g112*xF[7] - g112*xF[8] - g112*xF[9] - g116*g198*g280 - g195*g278*(g111 + 1) - g195*g280*(pow(alpha, g21*g47) - 1) - g196*g278*(g110 + 1) - g196*g280*(pow(alpha, g20*g47) - 1) - g197*g278*(g95 + 1) - g197*g280*(pow(alpha, g47*g5) - 1) - g198*g278*g73 - g199*g278*(g105 + 1) - g199*g280*(pow(alpha, g15*g47) - 1) - g200*g278*(g94 + 1) - g200*g280*(pow(alpha, g4*g47) - 1) - g201*g278*(g103 + 1) - g201*g280*(pow(alpha, g13*g47) - 1) - g202*g278*(g101 + 1) - g202*g280*(pow(alpha, g11*g47) - 1) - g203*g278*(g99 + 1) - g203*g280*(pow(alpha, g47*g9) - 1) - g204*g278*(g100 + 1) - g204*g280*(pow(alpha, g10*g47) - 1) - g205*g278*(g109 + 1) - g205*g280*(pow(alpha, g19*g47) - 1) - g206*g278*(g106 + 1) - g206*g280*(pow(alpha, g16*g47) - 1) - g207*g278*(g96 + 1) - g207*g280*(pow(alpha, g47*g6) - 1) - g208*g278*(g97 + 1) - g208*g280*(pow(alpha, g47*g7) - 1) - g209*g278*(g108 + 1) - g209*g280*(pow(alpha, g18*g47) - 1) - g210*g278*(g98 + 1) - g210*g280*(pow(alpha, g47*g8) - 1) - g211*g278*(g104 + 1) - g211*g280*(pow(alpha, g14*g47) - 1) - g212*g278*(g107 + 1) - g212*g280*(pow(alpha, g17*g47) - 1) - g213*g278*(g102 + 1) - g213*g280*(pow(alpha, g12*g47) - 1) - g214*g278*(g93 + 1) - g214*g280*(pow(alpha, g1*g47) - 1);
25919  LpF = xF[0]*(g26 + 1.0)*(g252*g276 + g255*g279 + g69)/(g51*(g26 - 1.0)) + xF[10]*(g27 + 1.0)*(g251*g276 + g272*g279 + g69)/(g51*(g27 - 1.0)) + xF[11]*(g28 + 1.0)*(g248*g276 + g257*g279 + g69)/(g51*(g28 - 1.0)) + xF[12]*(g29 + 1.0)*(g235*g276 + g268*g279 + g69)/(g51*(g29 - 1.0)) + xF[13]*(g30 + 1.0)*(g244*g276 + g269*g279 + g69)/(g51*(g30 - 1.0)) + xF[14]*(g31 + 1.0)*(g250*g276 + g267*g279 + g69)/(g51*(g31 - 1.0)) + xF[15]*(g32 + 1.0)*(g246*g276 + g256*g279 + g69)/(g51*(g32 - 1.0)) + xF[16]*(g33 + 1.0)*(g247*g276 + g265*g279 + g69)/(g51*(g33 - 1.0)) + xF[17]*(g34 + 1.0)*(g237*g276 + g261*g279 + g69)/(g51*(g34 - 1.0)) + xF[18]*(g35 + 1.0)*(g242*g276 + g270*g279 + g69)/(g51*(g35 - 1.0)) + xF[19]*(g36 + 1.0)*(g249*g276 + g274*g279 + g69)/(g51*(g36 - 1.0)) + xF[1]*(g37 + 1.0)*(g254*g276 + g262*g279 + g69)/(g51*(g37 - 1.0)) + xF[2]*(g38 + 1.0)*(g240*g276 + g258*g279 + g69)/(g51*(g38 - 1.0)) + xF[3]*(g39 + 1.0)*(g245*g276 + g259*g279 + g69)/(g51*(g39 - 1.0)) + xF[4]*(g40 + 1.0)*(g238*g276 + g260*g279 + g69)/(g51*(g40 - 1.0)) + xF[5]*(g41 + 1.0)*(g241*g276 + g273*g279 + g69)/(g51*(g41 - 1.0)) + xF[6]*(g42 + 1.0)*(g243*g276 + g266*g279 + g69)/(g51*(g42 - 1.0)) + xF[7]*(g43 + 1.0)*(g239*g276 + g271*g279 + g69)/(g51*(g43 - 1.0)) + xF[8]*(g44 + 1.0)*(g253*g276 + g263*g279 + g69)/(g51*(g44 - 1.0)) + xF[9]*(g45 + 1.0)*(g236*g276 + g264*g279 + g69)/(g51*(g45 - 1.0));
25920  PpF = g70;
25921  TpF = -g23/g3;
25922  SWUpF = g281;
25923  SWUpP = g281*g71;
25924  xP[0] = g117*g216*g71;
25925  xP[1] = g115*g223*g71;
25926  xP[2] = g118*g220*g71;
25927  xP[3] = g119*g226*g71;
25928  xP[4] = g120*g218*g71;
25929  xP[5] = g121*g234*g71;
25930  xP[6] = g122*g227*g71;
25931  xP[7] = g123*g233*g71;
25932  xP[8] = g124*g229*g71;
25933  xP[9] = g125*g217*g71;
25934  xP[10] = g126*g232*g71;
25935  xP[11] = g127*g221*g71;
25936  xP[12] = g128*g230*g71;
25937  xP[13] = g129*g224*g71;
25938  xP[14] = g130*g228*g71;
25939  xP[15] = g131*g219*g71;
25940  xP[16] = g132*g225*g71;
25941  xP[17] = g133*g215*g71;
25942  xP[18] = g134*g222*g71;
25943  xP[19] = g135*g231*g71;
25944  xT[0] = g113*g216*g74;
25945  xT[1] = g113*g223*g72;
25946  xT[2] = g113*g220*g75;
25947  xT[3] = g113*g226*g76;
25948  xT[4] = g113*g218*g77;
25949  xT[5] = g113*g234*g78;
25950  xT[6] = g113*g227*g79;
25951  xT[7] = g113*g233*g80;
25952  xT[8] = g113*g229*g81;
25953  xT[9] = g113*g217*g82;
25954  xT[10] = g113*g232*g83;
25955  xT[11] = g113*g221*g84;
25956  xT[12] = g113*g230*g85;
25957  xT[13] = g113*g224*g86;
25958  xT[14] = g113*g228*g87;
25959  xT[15] = g113*g219*g88;
25960  xT[16] = g113*g225*g89;
25961  xT[17] = g113*g215*g90;
25962  xT[18] = g113*g222*g91;
25963  xT[19] = g113*g231*g92;
25964  break;
25965 
25966  };
25967 
25968  i = 2;
25969  casc.mat_prod.comp[j] = xP[0];
25970  casc.mat_prod.comp[k] = xP[1];
25971  casc.mat_tail.comp[j] = xT[0];
25972  casc.mat_tail.comp[k] = xT[1];
25973  for(pyne::comp_iter ci = casc.mat_feed.comp.begin(); ci != casc.mat_feed.comp.end(); ci++)
25974  {
25975  nuc = (*ci).first;
25976  if (nuc == j || nuc == k)
25977  continue;
25978  casc.mat_prod.comp[nuc] = xP[i];
25979  casc.mat_tail.comp[nuc] = xT[i];
25980  i++;
25981  };
25982  // must renormalize to eliminate numerical error
25983  casc.mat_prod.norm_comp();
25984  casc.mat_tail.norm_comp();
25985  casc.mat_prod.mass = PpF;
25986  casc.mat_tail.mass = TpF;
25987 
25988  casc.N = NP1;
25989  casc.M = NT1;
25990  casc.l_t_per_feed = LpF;
25991  casc.swu_per_feed = SWUpF;
25992  casc.swu_per_prod = SWUpP;
25993 
25994  delete [] MW;
25995  delete [] xP;
25996  delete [] xF;
25997  delete [] xT;
25998 
25999  return casc;
26000 };
26001 //
26002 // end of src/enrichment_symbolic20.cpp
26003 //
26004 
26005 
26006 //
26007 // start of src/_decay.cpp
26008 //
26009 #ifdef PYNE_DECAY_IS_DUMMY
26010 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26011 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26012 // WARNING
26013 // This file has been auto generated
26014 // Do not modify directly. You have
26015 // been warned. This is that warning
26016 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26017 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26018 
26019 #ifndef PYNE_IS_AMALGAMATED
26020 #include "decay.h"
26021 #endif
26022 
26023 namespace pyne {
26024 namespace decayers {
26025 
26026 void decay_h(double t, std::map<int, double>::const_iterator &it, std::map<int, double> &outcomp, double (&out)[4]) {
26027  //using std::exp2;
26028  switch (it->first) {
26029  case 10010000: {
26030  out[0] += it->second;
26031  break;
26032  } case 10020000: {
26033  out[1] += it->second;
26034  break;
26035  } case 10030000: {
26036  double b0 = exp2(-2.572085e-09*t);
26037  out[2] += (it->second) * (b0);
26038  out[3] += (it->second) * (-1.000000e+00*b0 + 1.0);
26039  break;
26040  } default: {
26041  outcomp.insert(*it);
26042  break;
26043  }
26044  }
26045 }
26046 
26047 void decay_he(double t, std::map<int, double>::const_iterator &it, std::map<int, double> &outcomp, double (&out)[4]) {
26048  //using std::exp2;
26049  switch (it->first) {
26050  case 20030000: {
26051  out[3] += it->second;
26052  break;
26053  } default: {
26054  outcomp.insert(*it);
26055  break;
26056  }
26057  }
26058 }
26059 
26060 std::map<int, double> decay(std::map<int, double> comp, double t) {
26061  // setup
26062  using std::map;
26063  int nuc;
26064  int i = 0;
26065  double out [4] = {}; // init to zero
26066  map<int, double> outcomp;
26067 
26068  // body
26069  map<int, double>::const_iterator it = comp.begin();
26070  for (; it != comp.end(); ++it) {
26071  switch (nucname::znum(it->first)) {
26072  case 1:
26073  decay_h(t, it, outcomp, out);
26074  break;
26075  case 2:
26076  decay_he(t, it, outcomp, out);
26077  break;
26078  default:
26079  outcomp.insert(*it);
26080  break;
26081  }
26082  }
26083 
26084  // cleanup
26085  for (i = 0; i < 4; ++i)
26086  if (out[i] > 0.0)
26087  outcomp[all_nucs[i]] = out[i];
26088  return outcomp;
26089 }
26090 
26091 const int all_nucs [4] = {
26092  10010000, 10020000, 10030000, 20030000
26093 };
26094 
26095 } // namespace decayers
26096 } // namespace pyne
26097 
26098 #endif // PYNE_DECAY_IS_DUMMY//
26099 // end of src/_decay.cpp
26100 //
26101 
26102 
std::map< std::string, unsigned int > altnames
Mapping between alternative names for reactions and the reaction id.
Definition: pyne.cc:4343
unsigned int hash(std::string s)
Definition: pyne.cc:6322
std::vector< int > beta_parent(double energy, double error)
Definition: pyne.cc:8854
bool operator<=(const Value &other) const
Definition: pyne.cc:11242
double prod_per_feed(double x_feed, double x_prod, double x_tail)
Computes the product per feed mass ratio for feed, product, and tails enrichments x_feed...
Definition: pyne.cc:15101
struct pyne::alpha alpha
a struct matching the '/decay/alphas' table in nuc_data.h5.
name_zz_t::iterator name_zz_iter
name and Z num iter type
Definition: pyne.h:813
static void _load_simple_xs_map(std::string energy)
Definition: pyne.cc:9171
comp_map::iterator comp_iter
Nuclide-mass composition iter type.
Definition: pyne.h:4740
std::map< std::pair< int, int >, decay > decay_data
Mapping from a pair of nuclides in id form to a struct containing data associated with the decay from...
Definition: pyne.cc:8319
A struct matching the dose factor table in nuc_data.h5.
Definition: pyne.h:1907
std::vector< double > ec_intensity(int parent)
Definition: pyne.cc:8941
Value & operator[](ArrayIndex index)
Access an array element (zero based index ).
Definition: pyne.cc:11697
double to_dbl(std::string s)
Converts a valid string to a float using atof().
Definition: pyne.cc:142
zz_group name_to_zz_group(name_group eg)
Converts a name group to a Z number group.
Definition: pyne.cc:2612
std::map< std::string, std::map< int, std::map< int, double > > > simple_xs_map
map<energy, map<nuclide, map<rx, xs> > >
Definition: pyne.cc:9167
Material()
empty constructor
Definition: pyne.cc:14316
int ensdf_to_id(const char *nuc)
Definition: pyne.cc:3733
std::map< unsigned int, std::string > id_name
Mapping from reaction ids to reaction names.
Definition: pyne.cc:4344
unsigned int UInt
Definition: pyne.h:2653
unsigned integer value
Definition: pyne.h:3103
void norm_comp()
Normalizes the mass values in the composition.
Definition: pyne.cc:13377
double x_prod_j
enrichment of the j-th isotope in the product stream
Definition: pyne.h:5133
struct pyne::material_data material_data
A stuct for reprensenting fundemental data in a material.
double yield_fast_err
fast yield error [fraction]
Definition: pyne.h:2034
std::string fluka_material_component(int fid, int nucid, std::string fluka_name)
Intermediate level call to prepare final info and call material_line(..)
Definition: pyne.cc:13987
std::string fluka_format_field(float field)
Convenience function to format a single fluka field.
Definition: pyne.cc:14040
std::vector< std::string > Members
Definition: pyne.h:3195
struct pyne::atomic atomic
Structure for atomic data.
std::map< int, atomic > atomic_data_map
Definition: pyne.cc:7870
comp_map mult_by_mass()
Returns a composition map that has been unnormalized by multiplying each mass weight by the actual ma...
Definition: pyne.cc:14411
bool asBool() const
Definition: pyne.cc:11527
double yield_thermal
thermal yield [fraction]
Definition: pyne.h:2031
Material set_range(int lower=0, int upper=10000000, double value=0.0)
Creates a new Material with the mass weights for all nuclides in the id range set to value...
Definition: pyne.cc:14740
std::map< int, double > q_val_map
Mapping from nuclides in id form to their q_values and the fraction of Q that comes from gammas...
Definition: pyne.cc:6903
name_group LAN
lanthanide name group
zz_group lan
lanthanide Z number group
Definition: pyne.cc:2625
double value
Definition: pyne.h:3104
const_iterator begin() const
Definition: pyne.cc:12067
Value(ValueType type=nullValue)
Create a default Value of the given type.
Definition: pyne.cc:10910
bool operator>(const Value &other) const
Definition: pyne.cc:11252
Cascade solve_symbolic(Cascade &orig_casc)
A multicomponent enrichment cascade solver using a symbolic solution to the mass flow rate equations...
Definition: pyne.cc:15568
Material decay(double t)
Decays this material for a given amount of time in seconds.
Definition: pyne.cc:14942
double ext_soil_dose(int nuc, int source)
Function for External Soil Dose Factors.
Definition: pyne.cc:7155
std::vector< std::pair< double, double > > gamma_energy(int parent)
Definition: pyne.cc:8538
double b(int nuc)
Computes the scattering length [cm] from the coherent and incoherent components.
Definition: pyne.cc:7486
void clear()
Remove all object members and array elements.
Definition: pyne.cc:11649
ValueIterator iterator
Definition: pyne.h:3196
std::ostream & operator<<(std::ostream &sout, const Value &root)
Output using the StyledStreamWriter.
Definition: pyne.cc:13116
const_iterator end() const
Definition: pyne.cc:12098
bool allowComments_
true if comments are allowed. Default: true.
Definition: pyne.h:3047
name_t MA_array[10]
array of minor actinide names
Definition: pyne.cc:2644
double branch_ratio(std::pair< int, int > from_to)
Returns the branch ratio for a parent/child nuclide pair.
Definition: pyne.cc:8270
bool isBool() const
Definition: pyne.cc:11975
std::string get_flag(char line[], int max_l)
Finds and returns the first white-space delimited token of a line.
Definition: pyne.cc:243
std::vector< int > ecbp_parent(double energy, double error)
Definition: pyne.cc:8951
Custom exception for when an enrichment solver iteration has produced a NaN.
Definition: pyne.h:5308
Material expand_elements()
Returns a copy of the current material where all natural elements in the composition are expanded to ...
Definition: pyne.cc:14505
std::vector< std::pair< int, int > > gamma_from_to(int parent)
Definition: pyne.cc:8615
Writes a Value in JSON format in a human friendly way, to a stream rather than to a string...
Definition: pyne.h:4543
bool isnuclide(std::string nuc)
Definition: pyne.cc:2670
std::string source_string(int source)
Functions for Source Location in nuc_data.h5 and related Map Pointers.
Definition: pyne.cc:7068
std::string natural_naming(std::string name)
Calculates a version of the string name that is also a valid variable name.
Definition: pyne.cc:317
double sigma_f
Definition: pyne.cc:9157
Features()
Initialize the configuration like JsonConfig::allFeatures;.
Definition: pyne.cc:9497
std::string fluka_material_str(int id)
High level call to get details and call material_component(..)
Definition: pyne.cc:13954
Json::LargestInt LargestInt
Definition: pyne.h:3204
bool operator<(const CapacityConstraint< T > &lhs, const CapacityConstraint< T > &rhs)
CapacityConstraint-CapacityConstraint comparison operator, allows usage in ordered containers...
Value removeMember(const char *key)
Remove and return the named member.
Definition: pyne.cc:11862
signed integer value
Definition: pyne.h:3102
double dose_ratio(int nuc, int source)
Dose Ratio.
Definition: pyne.cc:7129
double swu_per_feed(double x_feed, double x_prod, double x_tail)
Computes the swu per feed ratio for feed, product, and tails enrichments x_feed, x_prod, and x_tails.
Definition: pyne.cc:15117
static const LargestUInt maxLargestUInt
Maximum unsigned integer value that can be stored in a Json::Value.
Definition: pyne.h:3214
char Char
Definition: pyne.h:4212
int nist_to_id(const char *nuc)
Definition: pyne.cc:3454
std::string last_char(std::string s)
Returns the last character in a string.
Definition: pyne.cc:292
Custom exception to be thrown in the event that a required file is not able to be found...
Definition: pyne.h:219
const double Bq_per_Ci
Becquerel per Curie.
Definition: pyne.cc:6668
bool isEqual(const SelfType &other) const
Definition: pyne.cc:10527
Custom expection for declaring that a value represents one or more nuclides in one or more namig conv...
Definition: pyne.h:938
std::string dose_lung_model(int nuc, int source)
Lung Model.
Definition: pyne.cc:7257
int alara_to_id(const char *nuc)
Definition: pyne.cc:3595
std::vector< double > beta_endpoint_energy(int parent)
Definition: pyne.cc:8839
complex type struct, matching PyTables definition
Definition: pyne.h:317
Value get(ArrayIndex index, const Value &defaultValue) const
If the array contains at least index+1 elements, returns the element value, otherwise returns default...
Definition: pyne.cc:11778
void _load_dose_map(std::map< int, dose > &dm, std::string source_path)
Loads the dose factor data from the nuc_data.h5 file into memory according to the user-input source...
Definition: pyne.cc:7007
bool isObject() const
Definition: pyne.cc:12025
std::map< std::string, std::string > get_data_checksums()
Definition: pyne.cc:6676
int metastable_id(int nuc, int m)
Returns the nuc_id of a metastable state.
Definition: pyne.cc:8119
int mcnp(int nuc)
Definition: pyne.cc:3196
UInt64 LargestUInt
Definition: pyne.h:2668
name_group MA
minor actinide name group
Cascade()
default constructors
Definition: pyne.cc:15010
static const LargestInt minLargestInt
Minimum signed integer value that can be stored in a Json::Value.
Definition: pyne.h:3210
double ingest_dose(int nuc, int source)
Functions for Ingestion Dose Factors and Fraction of activity that is absorbed by body fluids...
Definition: pyne.cc:7183
int nuc
nuclide in id form
Definition: pyne.h:1969
double sigma_s
Definition: pyne.cc:9152
Material del_range(int lower=0, int upper=10000000)
Creates a new Material with the all nuclides in the id range removed.
Definition: pyne.cc:14761
std::vector< double > beta_average_energy(int parent)
Definition: pyne.cc:8844
std::vector< std::pair< double, double > > gamma_total_intensity(int parent)
Definition: pyne.cc:8602
Json::Int Int
Definition: pyne.h:3199
bool operator()(const std::pair< int, double > &lhs, const std::pair< int, double > &rhs) const
This operator compares the second item in a pair first.
Definition: pyne.cc:7724
double sigma_4n
Definition: pyne.cc:9164
Experimental and untested: represents an element of the "path" to access a node.
Definition: pyne.h:3573
double coth(double x)
The hyperbolic cotangent function.
Definition: pyne.cc:367
std::vector< std::pair< double, double > > betas(int parent_state_id)
Definition: pyne.cc:9049
std::map< int, double > atomic_mass_map
Mapping from nuclides in id form to their atomic masses.
Definition: pyne.cc:6695
Json::ArrayIndex ArrayIndex
Definition: pyne.h:3206
std::map< int, double > natural_abund_map
Mapping from nuclides in id form to their natural abundances.
Definition: pyne.cc:6803
double yield_14MeV
14 MeV yield [fraction]
Definition: pyne.h:2035
double l_t_per_feed
Total flow rate per feed rate.
Definition: pyne.h:5140
const double barns_per_cm2
barns per cm^2
Definition: pyne.cc:6663
Material collapse_elements(std::set< int > exception_znum)
Definition: pyne.cc:14547
virtual std::string write(const Value &root)
Serialize a Value in JSON format.
Definition: pyne.cc:12637
Cascade default_uranium_cascade
a cascade instance with default values for a uranium enrichment.
int map_metastable[TOTAL_STATE_MAPS]
Definition: pyne.cc:1360
virtual std::string write(const Value &root)
Definition: pyne.cc:12566
Lightweight wrapper to tag static string.
Definition: pyne.h:3138
static const unsigned int unknown
Unknown size marker.
Definition: pyne.cc:10733
std::map< std::pair< int, unsigned int >, level_data > level_data_rx_map
Definition: pyne.cc:8017
ValueConstIterator const_iterator
Definition: pyne.h:3197
double yield_fast
fast yield [fraction]
Definition: pyne.h:2043
double yield_thermal_err
thermal yield error [fraction]
Definition: pyne.h:2032
void * _fill_maps()
A helper function to set the contents of the variables in this library.
Definition: pyne.cc:4353
std::string fluka(int nuc)
Definition: pyne.cc:3268
double swu_per_prod
This is the SWU for 1 kg of Product material.
Definition: pyne.h:5142
std::string PYNE_DATA
Path to the directory containing the PyNE data.
Definition: pyne.cc:77
std::map< int, double > to_atom_dens()
Returns a mapping of the nuclides in this material to their atom densities.
Definition: pyne.cc:14863
int groundstate(int nuc)
Definition: pyne.h:1365
std::vector< std::pair< double, double > > decay_photon_branch_ratios(int parent)
Definition: pyne.cc:8429
Structure for atomic data.
Definition: pyne.h:2117
bool ternary_ge(int a, int b, int c)
Returns true if a <= b <= c and flase otherwise.
Definition: pyne.cc:304
int sza(int nuc)
Definition: pyne.cc:3635
struct pyne::ecbp ecbp
A struct matching the '/decay/ecbp' table in nuc_data.h5.
double mass
mass (in arbitrary units) of the Material.
Definition: pyne.h:4916
bool USE_WARNINGS
Definition: pyne.cc:405
std::vector< std::pair< double, double > > xrays(int parent)
Definition: pyne.cc:9070
static bool in(Reader::Char c, Reader::Char c1, Reader::Char c2, Reader::Char c3, Reader::Char c4, Reader::Char c5)
Definition: pyne.cc:9527
unsigned int ArrayIndex
Definition: pyne.h:2711
Cascade solve_numeric(Cascade &orig_casc, double tolerance=1.0E-7, int max_iter=100)
Finds the total flow rate (L) over the feed flow rate (F), the number of enriching stages (N)...
Definition: pyne.cc:15366
std::string name(int nuc)
Definition: pyne.cc:2939
std::string to_lower(std::string s)
Returns an all lower case copy of the string.
Definition: pyne.cc:222
std::map< int, double > b_map
Mapping from nuclides in id form to their scattering length.
Definition: pyne.cc:7285
bool parse(const std::string &document, Value &root, bool collectComments=true)
Read a Value from a JSON document.
Definition: pyne.cc:9556
void _load_q_val_map()
Loads the q_value data from the nuc_data.h5 file into memory.
Definition: pyne.cc:6861
ValueType type() const
Definition: pyne.cc:11185
void decay_he(double &t, std::map< int, double >::const_iterator &it, std::map< int, double > &outcomp, double(&out)[3972])
Definition: pyne_decay.cc:44
double gamma_frac(int nuc)
Definition: pyne.cc:6952
A stuct for reprensenting fundemental data in a material.
Definition: pyne.h:5062
double prod_per_tail(double x_feed, double x_prod, double x_tail)
Computes the product per tails mass ratio for feed, product, and tails enrichments x_feed...
Definition: pyne.cc:15097
const double N_A
Avogadro's Number.
Definition: pyne.cc:6662
static const UInt maxUInt
Maximum unsigned int value that can be stored in a Json::Value.
Definition: pyne.h:3221
#define JSON_ASSERT_MESSAGE(condition, message)
Definition: pyne.cc:10716
std::vector< std::pair< double, double > > decay_beta_branch_ratios(int parent)
Definition: pyne.cc:8450
std::vector< double > ecbp_endpoint_energy(int parent)
returns a list of electron capture/ beta plus decay endpoint energies from input parent nuclide ...
Definition: pyne.cc:8931
AllocatedType * allocate()
allocate space for an array of objectPerAllocation object.
Definition: pyne.cc:10328
std::map< std::string, unsigned int > name_id
Mapping from reaction names to reaction ids.
Definition: pyne.cc:4345
double Mstar
mass separation factor
Definition: pyne.h:5124
Represents a JSON value.
Definition: pyne.h:3187
void load_json(Json::Value)
Loads a JSON instance tree into this Material.
Definition: pyne.cc:14243
Json::Int64 Int64
Definition: pyne.h:3202
name_t FP_array[88]
array of fission product names
Definition: pyne.cc:2652
int sza_to_id(int nuc)
Definition: pyne.cc:3654
bool isUInt() const
Definition: pyne.cc:11987
Material operator/(double)
Divides a material's mass.
Definition: pyne.cc:14988
bool operator<(const Value &other) const
Definition: pyne.cc:11201
xd_complex_t b_coherent(int nuc)
Finds the coherent scattering length [cm] for a nuclide nuc.
Definition: pyne.cc:7345
int id_to_state_id(int nuc_id)
Definition: pyne.cc:3703
void setComment(const char *comment, CommentPlacement placement)
Comments must be //... or /* ... */.
Definition: pyne.cc:12031
const Value & resolve(const Value &root) const
Definition: pyne.cc:12295
int id_from_level(int nuc, double level)
Returns the nuc_id of an energy level.
Definition: pyne.cc:8112
std::map< std::pair< int, double >, alpha > alpha_data
A vector of structs containing alpha data for access in memory.
Definition: pyne.cc:8706
const char * c_str() const
Definition: pyne.h:3151
double dose_fluid_frac(int nuc, int source)
Fluid Fraction.
Definition: pyne.cc:7206
Material operator+(double)
Adds mass to a material instance.
Definition: pyne.cc:14951
a struct matching the '/neutron/wimsd_fission_product' table in nuc_data.h5.
Definition: pyne.h:2018
name_t LAN_array[15]
array of lanthanide names
Definition: pyne.cc:2621
Configuration passed to reader and writer.
Definition: pyne.h:3025
std::map< unsigned int, unsigned int > mt_id
Mapping from MT numbers to reaction names.
Definition: pyne.cc:4347
static std::string alphabet
uppercase alphabetical characters
Definition: pyne.h:127
Material sub_elem(int element)
Creates a sub-Material of only the given element.
Definition: pyne.cc:14787
a comment placed on the line before a value
Definition: pyne.h:3113
void write_json(char *filename)
Writes the Material out to a JSON file.
Definition: pyne.cc:14294
bool operator!=(const Value &other) const
Definition: pyne.cc:11299
zzname_t zz_fluka
nucid to fluka-name map
Definition: pyne.cc:2604
bool isValidIndex(ArrayIndex index) const
Return true if index < size().
Definition: pyne.cc:11786
static std::string fluka_mat_strings[]
Definition: pyne.h:4751
int fluka_to_id(std::string name)
Definition: pyne.cc:3280
Custom exception for when a path is not found in an HDF5 file.
Definition: pyne.h:435
Data access functions.
Definition: pyne.h:2080
a struct matching the '/decay/betas' table in nuc_data.h5.
Definition: pyne.h:2368
double sigma_trit
Definition: pyne.cc:9161
static const UInt64 maxUInt64
Maximum unsigned 64 bits int value that can be stored in a Json::Value.
Definition: pyne.h:3228
bool contains_substring(std::string s, std::string substr)
Returns true if substr is in s.
Definition: pyne.cc:310
std::string doc(int x)
Definition: pyne.cc:6556
pyne::Material mat_prod
product material
Definition: pyne.h:5137
std::vector< int > gamma_parent(double energy, double error)
Definition: pyne.cc:8654
zzname_t get_zz_fluka()
Creates standard nucid to fluka-name mapping.
Definition: pyne.cc:2595
std::vector< int > beta_child(double energy, double error)
Definition: pyne.cc:8859
std::vector< std::pair< int, int > > gamma_parent_child(double energy, double error)
Definition: pyne.cc:8641
static const Int64 maxInt64
Maximum signed 64 bits int value that can be stored in a Json::Value.
Definition: pyne.h:3226
bool toggle_warnings()
Toggles warnings on and off.
Definition: pyne.cc:407
std::vector< int > ecbp_child(double energy, double error)
Definition: pyne.cc:8956
Material sub_fp()
Creates a sub-Material of only fission products.
Definition: pyne.cc:14821
double endftod_f(char *s)
Converts a string from ENDF format to a float.
Definition: pyne.cc:201
void _recompute_nm(Cascade &casc, double tolerance=1.0E-7)
So,ves for valid stage numbers N &nd M of a casc.
Definition: pyne.cc:15145
std::map< name_t, zz_t > name_zz_t
name and Z num map type
Definition: pyne.h:812
float asFloat() const
Definition: pyne.cc:11500
SelfType & operator=(const ValueIteratorBase &other)
Definition: pyne.cc:10630
long long int Int64
Definition: pyne.h:2664
std::string NUC_DATA_PATH
Path to the nuc_data.h5 file.
Definition: pyne.h:1811
bool isDouble() const
Definition: pyne.cc:12001
a struct matching the q_value table in nuc_data.h5.
Definition: pyne.h:1880
bool not_fluka_builtin(std::string fluka_name)
Convenience function to tell whether a given name needs a material card.
Definition: pyne.cc:13921
void enableYAMLCompatibility()
Definition: pyne.cc:12560
Material sub_ma()
Creates a sub-Material of only minor actinides.
Definition: pyne.cc:14814
bool isConvertibleTo(ValueType other) const
Definition: pyne.cc:11551
double feed_per_prod(double x_feed, double x_prod, double x_tail)
Computes the feed per product mass ratio for feed, product, and tails enrichments x_feed...
Definition: pyne.cc:15089
std::map< std::pair< int, double >, beta > beta_data
A vector of structs containing beta data for access in memory.
Definition: pyne.cc:8783
Outputs a Value in JSON format without formatting (not human friendly).
Definition: pyne.h:4450
bool isMember(const char *key) const
Return true if the object has a member named key.
Definition: pyne.cc:11900
const char * memberName() const
Return the member name of the referenced Value. "" if it is not an objectValue.
Definition: pyne.cc:10591
#define NUM_RX_NAMES
Number of reactions supported by default.
Definition: pyne.h:1420
bool isArray() const
Definition: pyne.cc:12019
int child(int nuc, unsigned int rx, std::string z="n")
Definition: pyne.cc:6593
static std::string codePointToUTF8(unsigned int cp)
Converts a unicode code-point to UTF-8.
Definition: pyne.cc:9393
double yield_fast
fast yield [fraction]
Definition: pyne.h:2033
a struct matching the '/decay/alphas' table in nuc_data.h5.
Definition: pyne.h:2343
void _recompute_prod_tail_mats(Cascade &casc)
This function takes a given initial guess number of enriching and stripping stages for a given compos...
Definition: pyne.cc:15199
void write_hdf5(char *filename, char *datapath, char *nucpath, float row=-0.0, int chunksize=100)
Writes this material out to an HDF5 file.
Definition: pyne.cc:13591
double alphastar_i(double alpha, double Mstar, double M_i)
Computes the nuclide-specific stage separation factor from the overall stage separation factor alpha...
Definition: pyne.cc:15139
std::map< zz_t, name_t > zzname_t
Z num to name map type.
Definition: pyne.h:817
const double Ci_per_Bq
Curies per Becquerel.
Definition: pyne.cc:6669
Cascade _fill_default_uranium_cascade()
Greates a cascade instance with default values for a uranium enrichment.
Definition: pyne.cc:15060
int state_id_to_id(int state)
Definition: pyne.cc:3682
zz_group act
actinide Z number group
Definition: pyne.cc:2632
std::map< std::pair< std::string, int >, unsigned int > offset_id
Mapping from particle type and offset pairs to reaction ids.
Definition: pyne.cc:4350
std::string name(int n)
Definition: pyne.cc:6366
static const Int minInt
Minimum signed int value that can be stored in a Json::Value.
Definition: pyne.h:3217
Value & deref() const
Definition: pyne.cc:10457
bool isNumeric() const
Definition: pyne.cc:12007
void normalize()
Normalizes the mass.
Definition: pyne.cc:14405
std::map< int, dose > genii_dose_map
Definition: pyne.cc:7098
void resize(ArrayIndex size)
Resize the array to size elements.
Definition: pyne.cc:11673
Value & operator=(const Value &other)
Definition: pyne.cc:11167
std::map< int, double > comp_map
Nuclide-mass composition map type.
Definition: pyne.h:4739
std::string valueToString(LargestInt value)
Definition: pyne.cc:12408
double yield_fast_err
fast yield error [fraction]
Definition: pyne.h:2044
void _load_comp_protocol1(hid_t db, std::string datapath, int row)
Loads the matrial composition from an HDF5 file according to the layout defined by protocol 1...
Definition: pyne.cc:13431
void _load_scattering_lengths()
Loads the scattering length data from the nuc_data.h5 file into memory.
Definition: pyne.cc:7288
Int64 LargestInt
Definition: pyne.h:2667
static const Value null
Definition: pyne.h:3208
difference_type computeDistance(const SelfType &other) const
Definition: pyne.cc:10493
static bool isControlCharacter(char ch)
Returns true if ch is a control character (in range [0,32[).
Definition: pyne.cc:9424
std::string to_str(int t)
Definition: pyne.cc:113
bool operator>=(const Value &other) const
Definition: pyne.cc:11247
struct pyne::dose dose
A struct matching the dose factor table in nuc_data.h5.
a struct matching the '/decay/decays' table in nuc_data.h5.
Definition: pyne.h:2247
std::map< CZString, Value > ObjectValues
Definition: pyne.h:3260
std::string nist(int nuc)
Definition: pyne.cc:3401
double state_energy(int nuc)
Returns the excitation energy [MeV] of a nuc in a given state.
Definition: pyne.cc:8195
double yield_14MeV
14 MeV yield [fraction]
Definition: pyne.h:2045
BatchAllocator(unsigned int objectsPerPage=255)
Definition: pyne.cc:10308
std::map< std::pair< std::string, unsigned int >, int > id_offset
Mapping from particle type and reaction ids to offsets.
Definition: pyne.cc:4351
static const Int64 minInt64
Minimum signed 64 bits int value that can be stored in a Json::Value.
Definition: pyne.h:3224
std::string name_t
name type
Definition: pyne.h:809
double mass_density(double num_dens=-1.0, double apm=-1.0)
Computes, sets, and returns the mass density when num_dens is greater than or equal zero...
Definition: pyne.cc:14603
double inhale_dose(int nuc, int source)
Functions for Inhalation Dose Factors and Lung Model used to obtain dose factors. ...
Definition: pyne.cc:7234
double endftod_cpp(char *s)
Converts a string from ENDF format to a float.
Definition: pyne.cc:146
double sigma_alpha
Definition: pyne.cc:9158
int cinder_to_id(int nuc)
Definition: pyne.cc:3519
Reader()
Constructs a Reader allowing all features for parsing.
Definition: pyne.cc:9545
double mass
material mass
Definition: pyne.h:5063
std::vector< std::pair< double, double > > xrays()
Returns a list of x-rays average energies in keV and intensities in decays/s material unnormalized...
Definition: pyne.cc:14895
std::string zzllaaam(int nuc)
Definition: pyne.cc:3101
a struct matching the '/decay/level_list' table in nuc_data.h5.
Definition: pyne.h:2158
void _load_ndsfpy()
Loads the NDS fission product yield data from the nuc_data.h5 file into memory.
Definition: pyne.cc:7577
double sigma_gamma
Definition: pyne.cc:9156
UInt asUInt() const
Definition: pyne.cc:11370
AllocatedType Type
Definition: pyne.cc:10306
#define TOTAL_STATE_MAPS
Definition: pyne.cc:436
void use_fast_endftod()
Definition: pyne.cc:211
int cinder(int nuc)
Definition: pyne.cc:3491
A struct matching the '/decay/ecbp' table in nuc_data.h5.
Definition: pyne.h:2395
std::string slice_from_end(std::string s, int n=-1, int l=1)
Returns the slice of a string s using the negative index n and the length of the slice l...
Definition: pyne.cc:298
std::vector< std::pair< double, double > > ecbp_xrays(int parent)
Definition: pyne.cc:8966
std::vector< std::pair< double, double > > gamma_photon_intensity(int parent)
Definition: pyne.cc:8563
Json::UInt UInt
Definition: pyne.h:3198
#define JSON_ASSERT_UNREACHABLE
Definition: pyne.cc:10713
std::vector< std::pair< double, double > > normalize_radioactivity(std::vector< std::pair< double, double > > unnormed)
Takes a list of photon energies and intensities and normalizes them so the sum of the intensities is ...
Definition: pyne.cc:14924
double natural_abund(int nuc)
Returns the natural abundance of a nuclide nuc.
Definition: pyne.cc:6805
bool operator==(const Value &other) const
Definition: pyne.cc:11257
void _load_state_map()
Definition: pyne.cc:3676
std::vector< std::pair< double, double > > calculate_xray_data(int z, double k_conv, double l_conv)
Definition: pyne.cc:7972
double ext_air_dose(int nuc, int source)
Returns the dose factors of a nuclide.
Definition: pyne.cc:7106
std::vector< std::pair< double, double > > gamma_conversion_intensity(int parent)
Definition: pyne.cc:8589
bool isNull() const
Definition: pyne.cc:11969
unsigned int id(int x)
Definition: pyne.cc:6408
name_group ACT
actinide name group
comp_map comp
composition, maps nuclides in id form to normalized mass weights.
Definition: pyne.h:4915
static void uintToString(LargestUInt value, char *&current)
Converts an unsigned integer to string.
Definition: pyne.cc:9444
object value (collection of name/value pairs).
Definition: pyne.h:3108
static Features all()
A configuration that allows all features and assumes all strings are UTF-8.
Definition: pyne.cc:9504
std::pair< double, double > decay_photon_branch_ratio(std::pair< int, int >)
Definition: pyne.cc:8421
comp_map decay_heat()
Calculates the decay heat of a material based on the composition and each nuclide's mass...
Definition: pyne.cc:14436
bool value
Definition: pyne.h:3106
Json::LargestUInt LargestUInt
Definition: pyne.h:3205
name_group FP
fission product name group
name_t TRU_array[22]
array of transuranic names
Definition: pyne.cc:2635
std::string fluka_material_line(int znum, double atomic_mass, int fid, std::string fluka_name)
Format information into a FLUKA material card.
Definition: pyne.cc:14006
Custom exception for declaring a simple_xs request invalid.
Definition: pyne.h:2464
std::map< std::pair< int, double >, ecbp > ecbp_data
A vector of structs containing ecbp data for access in memory.
Definition: pyne.cc:8867
Material sub_lan()
Creates a sub-Material of only lanthanides.
Definition: pyne.cc:14794
xd_complex_t b_incoherent(int nuc)
Finds the incoherent scattering length [cm] for a nuclide nuc.
Definition: pyne.cc:7417
Material del_mat(std::set< int > nucset)
Creates a new Material with the all nuclides in nucset removed.
Definition: pyne.cc:14687
int to_int(std::string s)
Converts a string of digits to an int using atoi().
Definition: pyne.cc:138
void swap(Value &other)
Swap values.
Definition: pyne.cc:11174
std::map< int, pyne::dose > & dose_source_map(int source)
Definition: pyne.cc:7080
name_zz_t fluka_zz
fluka-name to nucid map
Definition: pyne.cc:2591
Material sub_range(int lower=0, int upper=10000000)
Creates a sub-Material based on a range of id-form integers.
Definition: pyne.cc:14720
char UIntToStringBuffer[uintToStringBufferSize]
Definition: pyne.cc:9435
int parent(int nuc, unsigned int rx, std::string z="n")
Definition: pyne.cc:6621
UInt index() const
Return the index of the referenced Value. -1 if it is not an arrayValue.
Definition: pyne.cc:10576
CustomWriter(std::string opencurly="{", std::string closecurly="}", std::string opensquare="[", std::string closesquare="]", std::string colon=":", std::string comma=",", std::string indent=" ", int maxWidth=74)
Definition: pyne.cc:13173
double sigma_e
Definition: pyne.cc:9153
double alpha
stage separation factor
Definition: pyne.h:5123
ValueType
Type of the value held by a Value object.
Definition: pyne.h:3099
struct pyne::decay decay
a struct matching the '/decay/decays' table in nuc_data.h5.
double _deltaU_i_OverG(Cascade &casc, int i)
Solves for a stage separative power relevant to the ith component per unit of flow G...
Definition: pyne.cc:15351
std::map< int, xd_complex_t > b_coherent_map
Mapping from nuclides in id form to their coherent scattering length.
Definition: pyne.cc:7283
struct pyne::gamma gamma
a struct matching the '/decay/gammas' table in nuc_data.h5.
double q_val(int nuc)
Returns the q_value of a nuclide nuc.
Definition: pyne.cc:6905
std::string to_upper(std::string s)
switches endftod to fast cpp version
Definition: pyne.cc:215
Cascade multicomponent(Cascade &orig_casc, char *solver, double tolerance=1.0E-7, int max_iter=100)
Definition: pyne.cc:15413
double sigma_3n
Definition: pyne.cc:9163
zz_group fp
fission product Z number group
Definition: pyne.cc:2662
double sigma_t
Definition: pyne.cc:9151
const double MeV_per_MJ
MeV per MJ.
Definition: pyne.cc:6667
struct pyne::level_data level_data
a struct matching the '/decay/level_list' table in nuc_data.h5.
bool isInt() const
Definition: pyne.cc:11981
a struct matching the '/decay/gammas' table in nuc_data.h5.
Definition: pyne.h:2285
comp_map dose_per_g(std::string dose_type, int source=0)
Caclulates the dose per gram using the composition of the the material, the dose type desired...
Definition: pyne.cc:14448
void _reset_xjs()
Sets x_feed_j to j-th value of mat_feed.
Definition: pyne.cc:15038
a comment just after a value on the same line
Definition: pyne.h:3114
static void releaseStringValue(char *value)
Free the string duplicated by duplicateStringValue().
Definition: pyne.cc:10759
void _load_atomic_mass_map()
Loads the atomic mass and natural abundance data from the nuc_data.h5 file into memory.
Definition: pyne.cc:6697
#define JSON_FAIL_MESSAGE(message)
Definition: pyne.cc:10715
int nuc
nuclide in id form
Definition: pyne.h:1908
std::string serpent(int nuc)
Definition: pyne.cc:3295
int mcnp_to_id(int nuc)
Definition: pyne.cc:3228
void _load_comp_protocol0(hid_t db, std::string datapath, int row)
Loads the matrial composition from an HDF5 file according to the layout defined by protocol 0...
Definition: pyne.cc:13393
static bool containsControlCharacter(const char *str)
Definition: pyne.cc:12399
std::istream & operator>>(std::istream &sin, Value &root)
Read from 'sin' into 'root'.
Definition: pyne.cc:10251
Json::UInt64 UInt64
Definition: pyne.h:3201
double asDouble() const
Definition: pyne.cc:11473
std::string mcnp(std::string frac_type="mass")
Return an mcnp input deck record as a string.
Definition: pyne.cc:13820
bool isIntegral() const
Definition: pyne.cc:11993
base class for Value iterators.
Definition: pyne.h:3982
std::set< std::string > fluka_builtin(pyne::fluka_mat_strings, pyne::fluka_mat_strings+pyne::FLUKA_MAT_NUM)
------------------------------------------------------------------------—// Create a set out of the s...
double sigma_deut
Definition: pyne.cc:9160
bool hasComment(CommentPlacement placement) const
Definition: pyne.cc:12047
int map_nuc_ids[TOTAL_STATE_MAPS]
Definition: pyne.cc:438
double tail_per_feed(double x_feed, double x_prod, double x_tail)
Computes the tails per feed mass ratio for feed, product, and tails enrichments x_feed, x_prod, and x_tails.
Definition: pyne.cc:15105
int j
Component to enrich (U-235), id form.
Definition: pyne.h:5126
std::vector< int > alpha_child(double energy, double error)
Definition: pyne.cc:8775
std::map< std::pair< int, double >, level_data > level_data_lvl_map
Mapping from nuclides in id form to a struct containing data associated with that level...
Definition: pyne.cc:8015
Custom exception for invalid HDF5 protocol numbers.
Definition: pyne.h:5070
std::vector< std::pair< double, double > > gamma_xrays(int parent)
Definition: pyne.cc:8669
std::vector< double > beta_intensity(int parent)
Definition: pyne.cc:8849
CommentPlacement
Definition: pyne.h:3111
double slope(double x2, double y2, double x1, double y1)
Finds the slope of a line from the points (x1, y1) and (x2, y2).
Definition: pyne.cc:352
double N
number of enriching stages
Definition: pyne.h:5129
bool iselement(std::string nuc)
Definition: pyne.cc:2903
std::vector< T > data_access(double emin, double emax, size_t valoffset, std::map< std::pair< int, double >, U > &data)
Access data in a std::map<std::pair<int, double> for a range of values of the second member of the pa...
Definition: pyne.cc:7730
name_group TRU
transuranic name group
comp_map activity()
Calculates the activity of a material based on the composition and each nuclide's mass...
Definition: pyne.cc:14425
static std::string words
string of all valid word characters for variable names in programing languages.
Definition: pyne.h:129
double yield_14MeV_err
14 MeV yield error [fraction]
Definition: pyne.h:2046
std::string getFormattedErrorMessages() const
Returns a user friendly string that list errors in the parsed document.
Definition: pyne.cc:10236
std::vector< double > ecbp_average_energy(int parent)
Definition: pyne.cc:8936
virtual ~Writer()
Definition: pyne.cc:12547
zz_group ma
minor actinide Z number group
Definition: pyne.cc:2648
name_zz_t name_zz
name to Z num map
Definition: pyne.cc:2425
bool empty() const
Return true if empty array, empty object, or null; otherwise, false.
Definition: pyne.cc:11634
std::map< std::pair< int, int >, ndsfpysub > ndsfpy_data
Definition: pyne.cc:7574
double swu_per_tail(double x_feed, double x_prod, double x_tail)
Computes the swu per tails ratio for feed, product, and tails enrichments x_feed, x_prod...
Definition: pyne.cc:15131
Value key() const
Return either the index or the member name of the referenced value as a Value.
Definition: pyne.cc:10554
int zzllaaam_to_id(const char *nuc)
Definition: pyne.cc:3141
int Int
Definition: pyne.h:2652
double im
imaginary part
Definition: pyne.h:319
double yield_14MeV_err
14 MeV yield error [fraction]
Definition: pyne.h:2036
Path(const std::string &path, const PathArgument &a1=PathArgument(), const PathArgument &a2=PathArgument(), const PathArgument &a3=PathArgument(), const PathArgument &a4=PathArgument(), const PathArgument &a5=PathArgument())
Definition: pyne.cc:12220
std::map< unsigned int, std::string > labels
Mapping from reaction ids to labels (short descriptions).
Definition: pyne.cc:4348
int nuc
Definition: pyne.cc:9150
double M
number of stripping stages
Definition: pyne.h:5130
std::vector< double > decay_branch_ratios(int parent)
Definition: pyne.cc:8416
std::set< std::string > names
Set of reaction names, must be valid variable names.
std::set< int > decay_children(int nuc)
Returns a set of decay children of a nuc.
Definition: pyne.cc:8149
a comment on the line after a value (only make sense for root value)
Definition: pyne.h:3115
const double cm2_per_barn
cm^2 per barn
Definition: pyne.cc:6664
name_zz_t get_fluka_zz()
Creates standard fluka-name to nucid mapping.
Definition: pyne.cc:2443
struct pyne::beta beta
a struct matching the '/decay/betas' table in nuc_data.h5.
bool operator!() const
Return isNull()
Definition: pyne.cc:11643
zzname_t get_zz_name()
Creates standard Z number to name mapping.
Definition: pyne.cc:2429
void from_atom_frac(std::map< int, double > atom_fracs)
Sets the composition, mass, and atoms_per_molecule of this material to those calculated from atom_fra...
Definition: pyne.cc:14845
double swu_per_prod(double x_feed, double x_prod, double x_tail)
Computes the swu per product ratio for feed, product, and tails enrichments x_feed, x_prod, and x_tails.
Definition: pyne.cc:15124
std::string alara(int nuc)
Definition: pyne.cc:3543
static std::string digits
string of digit characters
Definition: pyne.h:125
std::ostream & operator<<(std::ostream &os, Material mat)
Converts a Material to a string stream representation for canonical writing.
Definition: pyne.cc:14389
void copy(const SelfType &other)
Definition: pyne.cc:10542
std::string asString() const
Definition: pyne.cc:11312
a struct matching the atomic_mass table in nuc_data.h5.
Definition: pyne.h:1823
int zzaaam(int nuc)
Definition: pyne.cc:3027
double yields
fission product yield, fraction [unitless]
Definition: pyne.h:2021
UInt64 asUInt64() const
Definition: pyne.cc:11426
'null' value
Definition: pyne.h:3101
std::string fluka_compound_str(int id, std::string frac_type="mass")
Return FLUKA compound card and the material card for the named compound but not the material cards of...
Definition: pyne.cc:14064
Int64 asInt64() const
Definition: pyne.cc:11400
std::vector< int > gamma_child(double energy, double error)
Definition: pyne.cc:8659
Custom exception for when an existing file is not in a valid HDF5 format.
Definition: pyne.h:371
std::string valueToQuotedString(const char *value)
Definition: pyne.cc:12488
Custom exception for declaring a value not to be of ambiquous reaction form.
Definition: pyne.h:1693
std::string toStyledString() const
Definition: pyne.cc:12060
std::vector< double > bp_intensity(int parent)
Definition: pyne.cc:8946
std::string getComment(CommentPlacement placement) const
Include delimiters and embedded newlines.
Definition: pyne.cc:12052
name_group::iterator name_group_iter
name grouping iter type
Definition: pyne.h:832
std::map< unsigned int, unsigned int > id_mt
Mapping from reaction ids to MT numbers.
Definition: pyne.cc:4346
a struct matching the '/neutron/nds_fission_product' table in nuc_data.h5
Definition: pyne.h:2028
static bool in(Reader::Char c, Reader::Char c1, Reader::Char c2, Reader::Char c3, Reader::Char c4)
Definition: pyne.cc:9522
std::string capitalize(std::string s)
Returns a capitalized copy of the string.
Definition: pyne.cc:230
static hid_t PYTABLES_COMPLEX128
The HDF5 id for a complex data type compatible with PyTables generated data.
Definition: pyne.h:745
Value & make(Value &root) const
Creates the "path" to access the specified node and returns a reference on the node.
Definition: pyne.cc:12341
SelfType & operator=(const SelfType &other)
Definition: pyne.cc:10671
bool operator==(const CapacityConstraint< T > &lhs, const CapacityConstraint< T > &rhs)
CapacityConstraint-CapacityConstraint equality operator.
comp_map decay(comp_map, double)
std::map< unsigned int, std::string > docs
Mapping from reaction ids to documentation strings (long descriptions).
Definition: pyne.cc:4349
void decay_h(double &t, std::map< int, double >::const_iterator &it, std::map< int, double > &outcomp, double(&out)[3972])
Definition: pyne_decay.cc:19
~Material()
default destructor
Definition: pyne.cc:14381
UTF-8 string value.
Definition: pyne.h:3105
virtual std::string write(const Value &root)
Definition: pyne.cc:13194
int zzzaaa_to_id(int nuc)
Definition: pyne.cc:3084
static int FLUKA_MAT_NUM
Definition: pyne.h:4759
void decay_c(double &t, std::map< int, double >::const_iterator &it, std::map< int, double > &outcomp, double(&out)[3972])
Definition: pyne_decay.cc:285
double re
real part
Definition: pyne.h:318
double value_func(double x)
Computes the value or separation potential of an assay x.
Definition: pyne.cc:15113
std::vector< std::pair< double, double > > photons(bool norm)
Returns a list of photon energies in keV and intensities in decays/s/atom material unnormalized...
Definition: pyne.cc:14914
static const Int maxInt
Maximum signed int value that can be stored in a Json::Value.
Definition: pyne.h:3219
std::map< std::string, std::string > data_checksums
Mapping from nodes in nuc_data.h5 to hashes of nodes.
Definition: pyne.cc:6689
std::vector< double > alpha_energy(int parent)
Definition: pyne.cc:8761
const int all_nucs[3972]
std::vector< std::pair< double, double > > gammas(int parent_state_id)
Returns a list of energies and intensities normalized to branching ratios.
Definition: pyne.cc:9009
LargestUInt asLargestUInt() const
Definition: pyne.cc:11463
void warning(std::string s)
Prints a warning message.
Definition: pyne.cc:412
double yield_thermal_err
thermal yield error [fraction]
Definition: pyne.h:2042
int snum(int nuc)
Definition: pyne.cc:3012
int serpent_to_id(const char *nuc)
Definition: pyne.cc:3351
void write(std::ostream &out, const Value &root)
Serialize a Value in JSON format.
Definition: pyne.cc:12880
double tail_per_prod(double x_feed, double x_prod, double x_tail)
Computes the tails per product mass ratio for feed, product, and tails enrichments x_feed...
Definition: pyne.cc:15109
zz_group tru
transuranic Z number group
Definition: pyne.cc:2640
const double pi
pi = 3.14159265359
Definition: pyne.cc:6661
static Features strictMode()
A configuration that is strictly compatible with the JSON specification.
Definition: pyne.cc:9510
void release(AllocatedType *object)
Release the object.
Definition: pyne.cc:10352
std::pair< double, double > decay_beta_branch_ratio(std::pair< int, int >)
Definition: pyne.cc:8442
const double MeV_per_K
MeV per Kelvin.
Definition: pyne.cc:6666
int id(int nuc)
Definition: pyne.cc:2715
std::map< std::pair< int, double >, gamma > gamma_data
Definition: pyne.cc:8463
int zzzaaa(int nuc)
Definition: pyne.cc:3065
Constant that specify the size of the buffer that must be passed to uintToString. ...
Definition: pyne.cc:9431
void from_json(char *filename)
Reads data from a JSON file at filename into this Material instance.
Definition: pyne.cc:14272
std::map< int, double > to_atom_frac()
Returns a mapping of the nuclides in this material to their atom fractions.
Definition: pyne.cc:14831
int znum(int nuc)
Definition: pyne.cc:2982
double half_life(int nuc)
Returns the half life for a nuclide nuc.
Definition: pyne.cc:8246
Json::Value dump_json()
Dumps the Material out to a JSON instance tree.
Definition: pyne.cc:14258
Material set_mat(std::set< int > nucset, double value)
Creates a new Material with the mass weights for all nuclides in nucset set to value.
Definition: pyne.cc:14651
std::vector< std::pair< double, double > > alphas(int parent_state_id)
Definition: pyne.cc:9030
name_t ACT_array[15]
array of actinide names
Definition: pyne.cc:2629
Unserialize a JSON document into a Value.
Definition: pyne.h:4209
std::map< int, int > state_id_map
Definition: pyne.cc:437
const char * asCString() const
Definition: pyne.cc:11305
StyledStreamWriter(std::string indentation="\t")
Definition: pyne.cc:12872
unsigned long long int UInt64
Definition: pyne.h:2665
double decay_const(int nuc)
Returns the decay constant for a nuclide nuc.
Definition: pyne.cc:8220
std::set< zz_t > zz_group
Z number grouping type (for testing containment)
Definition: pyne.h:835
double yield_thermal
thermal yield [fraction]
Definition: pyne.h:2041
unsigned int mt(int x)
Definition: pyne.cc:6460
Int asInt() const
Definition: pyne.cc:11342
bool isString() const
Definition: pyne.cc:12013
void write_text(char *filename)
Writes the Material out to a simple plaintext file readable by from_text().
Definition: pyne.cc:14205
double fpyield(std::pair< int, int > from_to, int source, bool get_error)
Returns the fission product yield for a parent/child nuclide pair.
Definition: pyne.cc:7644
std::string _names[NUM_RX_NAMES]
Raw array of reaction names.
Definition: pyne.cc:3765
std::map< int, xd_complex_t > b_incoherent_map
Mapping from nuclides in id form to their incoherent scattering length.
Definition: pyne.cc:7284
#define JSON_ASSERT(condition)
Definition: pyne.cc:10714
void _load_wimsdfpy()
Loads the WIMSD fission product yield data from the nuc_data.h5 file into memory. ...
Definition: pyne.cc:7526
double simple_xs(int nuc, int rx, std::string energy)
returns the microscopic cross section in barns for the specified nuclide, reaction, and energy group.
Definition: pyne.cc:9245
static const LargestInt maxLargestInt
Maximum signed integer value that can be stored in a Json::Value.
Definition: pyne.h:3212
std::vector< std::pair< double, double > > decay_half_lifes(int)
Definition: pyne.cc:8398
std::string fluka(int id, std::string frac_type="mass")
Return a fluka input deck MATERIAL card as a string.
Definition: pyne.cc:13929
std::vector< int > decay_data_children(int parent)
Definition: pyne.cc:8386
Material operator*(double)
Multiplies a material's mass.
Definition: pyne.cc:14981
void decay_br(double &t, std::map< int, double >::const_iterator &it, std::map< int, double > &outcomp, double(&out)[3972])
Definition: pyne_decay.cc:7473
int zzaaam_to_id(int nuc)
Definition: pyne.cc:3048
const double sec_per_day
seconds per day
Definition: pyne.cc:6665
Top-level enrichment functionality.
name_zz_t get_name_zz()
Creates standard name to Z number mapping.
Definition: pyne.cc:2305
std::string replace_all_substrings(std::string s, std::string substr, std::string repstr)
Replaces all instance of substr in s with repstr.
Definition: pyne.cc:280
static bool containsNewLine(Reader::Location begin, Reader::Location end)
Definition: pyne.cc:9533
A set of physical parameters used to specify an enrichment cascade.
Definition: pyne.h:5111
a struct matching the '/neutron/scattering_lengths' table in nuc_data.h5.
Definition: pyne.h:1968
double sigma_i
Definition: pyne.cc:9154
static char * duplicateStringValue(const char *value, unsigned int length=unknown)
Duplicates the specified string value.
Definition: pyne.cc:10744
void from_text(char *filename)
Reads data from a plaintext file at filename into this Material instance.
Definition: pyne.cc:14154
double sigma_2n
Definition: pyne.cc:9162
Iterator for object and array value.
Definition: pyne.h:4110
Material sub_tru()
Creates a sub-Material of only transuranics.
Definition: pyne.cc:14807
Members getMemberNames() const
Return a list of the member names.
Definition: pyne.cc:11920
std::string label(int x)
Definition: pyne.cc:6520
std::map< int, dose > epa_dose_map
Mapping from int to dose for 3 sources.
Definition: pyne.cc:7094
double sigma_a
Definition: pyne.cc:9155
const Char * Location
Definition: pyne.h:4213
double feed_per_tail(double x_feed, double x_prod, double x_tail)
Computes the feed per tails mass ratio for feed, product, and tails enrichments x_feed, x_prod, and x_tails.
Definition: pyne.cc:15093
double atomic_mass(int nuc)
Returns the atomic mass of a nuclide nuc.
Definition: pyne.cc:6743
int anum(int nuc)
Definition: pyne.cc:2997
bool file_exists(std::string strfilename)
Returns true if the file can be found.
Definition: pyne.cc:375
LargestInt asLargestInt() const
Definition: pyne.cc:11453
void pyne_start()
Initializes PyNE based on environment.
Definition: pyne.cc:80
zzname_t zz_name
Z num to name map.
Definition: pyne.cc:2438
int compare(const Value &other) const
Definition: pyne.cc:11191
void _load_data< level_data >()
Writes a Value in JSON format in a human friendly way.
Definition: pyne.h:4486
double(* endftod)(char *s)
endftod function pointer. defaults to fortran
Definition: pyne.cc:209
void from_hdf5(char *filename, char *datapath, int row=-1, int protocol=1)
Loads a material from an HDF5 file into this object.
Definition: pyne.cc:13536
Material composed of nuclides.
Definition: pyne.h:4762
std::string remove_characters(std::string s, std::string chars)
Removes all characters in the string chars from s.
Definition: pyne.cc:271
int nuc
nuclide in id form
Definition: pyne.h:1881
ArrayIndex size() const
Number of values in array or object.
Definition: pyne.cc:11601
double sigma_proton
Definition: pyne.cc:9159
Custom exception for declaring a value not to be a valid reaction.
Definition: pyne.h:1604
Custom expection for declaring that a value does not follow a recognizable nuclide naming convention...
Definition: pyne.h:870
bool strictRoot_
true if root must be either an array or an object value. Default: false.
Definition: pyne.h:3050
double solve_line(double x, double x2, double y2, double x1, double y1)
Solves the equation for the line y = mx + b, given x and the points that form the line: (x1...
Definition: pyne.cc:358
Value & append(const Value &value)
Append value to array at the end.
Definition: pyne.cc:11842
const iterator for object and array value.
Definition: pyne.h:4052
Material sub_mat(std::set< int > nucset)
Creates a sub-Material with only the nuclides present in nucset.
Definition: pyne.cc:14623
int offset(int dz, int da, int ds=0)
A helper function to compute nuclide id offsets from z-, a-, and s- deltas.
Definition: pyne.h:1456
std::string getFormatedErrorMessages() const
Returns a user friendly string that list errors in the parsed document.
Definition: pyne.cc:10230
double molecular_mass(double apm=-1.0)
Calculates the atomic weight of this material based on the composition and the number of atoms per mo...
Definition: pyne.cc:14482
a struct for the nds data for fpyield
Definition: pyne.h:2040
Material sub_act()
Creates a sub-Material of only actinides.
Definition: pyne.cc:14801
double swu_per_feed
This is the SWU for 1 kg of Feed material.
Definition: pyne.h:5141
std::pair< double, double > decay_branch_ratio(std::pair< int, int >)
Definition: pyne.cc:8410
T get_array_index(hid_t dset, int n, hid_t dtype=H5T_NATIVE_DOUBLE)
Retrieves the nth index out of the dataset dset (which has an HDF5 datatype dtype).
Definition: pyne.h:474
double tanh(double x)
The hyperbolic tangent function.
Definition: pyne.cc:363
std::vector< int > alpha_parent(double energy, double error)
Definition: pyne.cc:8770
double get_comp_sum()
Computes the total mass stored in the composition.
Definition: pyne.cc:13366
double x_tail_j
enrichment of the j-th isotope in the tails stream
Definition: pyne.h:5134
std::map< std::pair< int, int >, double > wimsdfpy_data
Mapping from nuclides in id form to their scattering length.
Definition: pyne.cc:7523
void * _
A dummy variable used when calling _fill_maps().
Definition: pyne.cc:6319
pyne::Material mat_feed
feed material
Definition: pyne.h:5136
std::set< name_t > name_group
name grouping type (for testing containment)
Definition: pyne.h:831
double x_feed_j
enrichment of the j-th isotope in the feed stream
Definition: pyne.h:5132
std::pair< double, double > decay_half_life(std::pair< int, int >)
Definition: pyne.cc:8392
std::map< int, double > gamma_frac_map
Definition: pyne.cc:6950
double number_density(double mass_dens=-1.0, double apm=-1.0)
Computes and returns the number density of the material using the mass density if mass_dens is greate...
Definition: pyne.cc:14612
std::vector< double > alpha_intensity(int parent)
Definition: pyne.cc:8765
int k
Component to de-enrich, or strip (U-238), id form.
Definition: pyne.h:5127
pyne::Material mat_tail
tails material
Definition: pyne.h:5138
std::map< int, dose > doe_dose_map
Definition: pyne.cc:7097
~Cascade()
default destructor
Definition: pyne.cc:15034
bool path_exists(hid_t h5file, std::string path)
Determines if a path exists in an hdf5 file.
Definition: pyne.h:752
std::string remove_substring(std::string s, std::string substr)
Creates a copy of s with all instances of substr taken out.
Definition: pyne.cc:260
array value (ordered list)
Definition: pyne.h:3107
std::vector< std::pair< double, double > > gammas()
Returns a list of gamma-rays energies in keV and intensities in decays/s/atom material unnormalized...
Definition: pyne.cc:14876
Cascade _norm_comp_secant(Cascade &casc, double tolerance=1.0E-7, int max_iter=100)
This function solves the whole system of equations.
Definition: pyne.cc:15239